我目前正在尝试使用angularjs $ http对象将一些数据上传到我自己编写的后端。使用这个对象我的编码有一些奇怪的行为。当我使用英特尔XDK IDE中的模拟器运行我的应用程序时,我没有任何问题。当我在真正的智能手机上运行应用程序时,我的$ http调用会产生一些问题。
我调试了我的应用程序,在网络概述中,我的调用返回了响应代码200.无论如何,执行.error(...)处理并跳过.success(...)处理。
我的编码如下:
$http({
method: 'POST',
url: dbServerPath + "SetStatUser.php",
data: exporting
}).success(function (response) {
console.log(response);
successSave();
}).error(function (response, code) {
console.log(response);
console.log(code);
errorSave();
});
即使呼叫未完成,它看起来也会返回错误。
问题必须出在前端。因为我使用Postman测试了我的后端。
编辑:为了进一步说明,我的后端什么都不返回,只是处理请求有效负载给出的数据。 Firefox和谷歌浏览器使用http代码200跟踪响应,但angularjs对象$ http将其跟踪为404.因此,我的后端不能成为这种奇怪行为的触发器。
答案 0 :(得分:0)
尝试使用.then and .catch
,可能是您的successSave()
方法抛出错误而且从未捕获过。
$http({
method: 'POST',
url: dbServerPath + "SetStatUser.php",
data: exporting
}).then(function (response) {
console.log(response);
successSave();
}, function (error) {
console.log(error);
errorSave();
}).catch(function(err){
console.log(err);
});
答案 1 :(得分:0)
我找到了解决问题的方法。
每个请求都需要一种响应,即使它只是 null 或 {} ,就像这个问题一样:Ajax request returns 200 OK, but an error event is fired instead of success我刚刚添加了一个
echo "null";
到我的PHP后端。如果有人遇到和我一样的问题,我希望这会有所帮助。