我在AngularJS中有一个$ http POST调用,如果请求不好,它将不会显示服务器响应。
myFactory.create = function(formData) {
deferred = $q.defer()
$http({method: 'POST', url: url, responseType: 'json', data: formData})
.then(function(data) {
deferred.resolve(data);
}, function(response, status, headers, config) {
deferred.reject(response);
});
return deferred.promise;
};
当我提交不正确的数据时,API会回复400 - 错误请求。如果我查看Chrome开发者工具中的回复,则会显示纯文本消息:“垂直不正确”。但是,该消息不在$ http错误回调的响应中。
我可以获取其他所有内容(状态,标头和配置),但我的响应数据为空。
正确处理成功的POST,因此我知道该功能通常有效。
知道为什么我能够在Chrome中看到响应但无法通过$ http访问它吗?
答案 0 :(得分:0)
你可以重构:
myFactory.create = function(formData) {
var url = 'api/create';
return $http({
method: 'POST',
url: url,
responseType: 'json', //Are you sure that it is returning a json??
data: formData
});
};
然后在任何你想要的地方检查承诺的回报,
myFactory.create().then(
function(data){
console.dir(data);
},function(response, status, headers, config) {
console.dir(response);
});
这应该有效,您应该在日志中看到数据。