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
如果发送了异步请求,错误回调不起作用,但成功了!它在 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