我在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 Developer工具中查看响应,则会显示一条纯文本消息:“竖线不正确。”但是,该消息不在$ http错误回调的响应中。
我可以得到一切(状态,头文件和配置),但我的响应数据为空。
成功的POSTs被正确处理,所以我知道该功能通常有效。
任何想法,为什么我会在Chrome中看到响应,但无法通过$ http访问它?
建议:不要在已经存在承诺的地方创建承诺。这就是所谓的反模式。 – rahpuser 2015-01-09 21:44:28
您可以发布实际从返回的承诺中获取数据的部分吗?另外,我只是假设你将'url'改为变量,尽管它不存在。而你并没有宣布推迟为var。 – gsalisi 2015-01-09 21:44:51
是的。 'url'实际上是一个变量,并在我的工厂的其他地方生成。现在,我刚刚用console.log(response)检查它,看看出现错误时返回的内容。 – 2015-01-09 21:54:47