Heim > Fragen und Antworten > Hauptteil
有一个rest服务,我的代码大致是这样
$http.jsonp(url)
.then(function(data){
console.log(data)
},function(res){
console.log(res)
})
Wenn keine Daten in der Datenbank vorhanden sind, zeigen die Netzwerkinformationen der Konsole den Status 200 an
Antwort gibt Daten zurück
Informationen gedruckt von console.log(res)
Warum ist der im Netzwerk angezeigte Status 200, beim Ausdrucken wird er jedoch zu 404 und die Antwortdaten werden nicht zurückgegeben. Jetzt muss ich zur Beurteilung den Rückgabecode = -1 erhalten, wenn keine Daten in der Datenbank vorhanden sind. Wie soll ich diese Antwort erhalten?
滿天的星座2017-05-24 11:39:44
URL地址需要添加?callback=JSON_CALLBACK,看你Response的结果是:({"returnCode": "-1"})
。正常Response的结果是:/**/angular.callbacks._0({"found":12,"posts": []});
以下是一个在线的示例:angularjs-http-jsonp-service-example,你把callback查询参数去掉,在看一下结果哈。
为什么开发者工具显示的status是200,它只是表示HTTP请求成功。为什么返回404,
if (event) {
// JS成功加载但回调未被调用
if (event.type === 'load' &&
!callbacks.wasCalled(callbackPath)) {
event = { type: 'error' };
}
text = event.type;
status = event.type === 'error' ? 404 : 200;
}
}
详细信息请参考AngularJS httpBackend源码。
jsonpReq only ever sets status to 200 (OK), 404 (ERROR) or -1 (WAITING) - httpBackend.js#65