Ajax iPhone 的错误回调未触发

Ajax Error callback not firing for iPhone

如果发送了异步请求,错误回调不起作用,但成功了!它在 Android 和浏览器中工作得很好。 在 iPhone 它适用于同步请求。这是我的代码。 其他 api 工作得很好。

$.ajax({
        type: 'POST',
        url: "https://api.cloud.appcelerator.com/v1/users/login.json?key=xxxxxxxxx",
        data: {
            "login": useremail,
            "password": password
        },
        success: function (resp) {                                               
            console.log(resp);
            console.log('User logged-in successfully');               
        },
        error: function (e) {
            console.log(e)
        }
    });

API returns 正确的电子邮件和密码的状态代码为 200,但错误的状态代码为 401,因此如果状态代码为 200,它运行良好,我会成功获得响应。

这似乎是 Cordova + iOS + jQuery 组合的一个非常常见的问题。

似乎没有什么方法可以解决这个 401 错误响应处理问题。一种是在发出AJAX请求和处理错误时添加timeout超时属性。另一种方法是在服务器端通过 HTTPS 发送请求并在出现 401 错误时返回带有错误详细信息的身份验证令牌来处理它。

请您查看此post了解更多信息。

此外,目前您无法在 iOS 中区分这两个错误(401 和 408 错误),因为我可以看到这个缺陷在官方 Apache Cordova Bug Tracking System.Request 中仍然存在,您可以查看此 bug