Angularjs $ http返回404而不是200

时间:2017-03-23 14:46:07

标签: javascript angularjs http

我目前正在尝试使用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.因此,我的后端不能成为这种奇怪行为的触发器。

2 个答案:

答案 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后端。如果有人遇到和我一样的问题,我希望这会有所帮助。