Ajax 错误回调未针对 iPhone 触发
Posted
技术标签:
【中文标题】Ajax 错误回调未针对 iPhone 触发【英文标题】:Ajax Error callback not firing for iPhone 【发布时间】:2016-06-04 05:28:16 【问题描述】:如果发送异步请求但成功则错误回调不起作用!它在 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 返回状态码 200 表示正确的电子邮件和密码,但返回 401 表示不正确的状态码,因此如果状态码为 200,则它运行良好,我会成功获得响应。
【问题讨论】:
我怀疑问题可能出在对 HTTPS URL 的 ajax 调用中。当从 ios 设备触发 ajax 调用时,您确定调用正在到达服务器端吗? @Gandhi 谢谢!但它必须到达服务器,因为成功回调适用于 iPhone 设备。 在这种情况下,您如何准确地从服务器端抛出错误以期望它被错误回调捕获? @Gandhi 我不认为我理解这个问题,但我无法控制服务器,它基于云的后端作为服务平台,它在 Android、浏览器和邮递员中运行良好,这个完全相同的代码适用于 android 和浏览器 400 状态码表示请求格式错误。也就是说,客户端向服务器发送的数据流不符合规则。所以我相信在这种情况下你不会得到成功或错误回调。 【参考方案1】:这似乎是 Cordova + iOS + jQuery 组合的一个非常常见的问题。
似乎解决此 401 错误响应处理问题的方法很少。一种是在发出 AJAX 请求和处理错误时添加超时超时属性。另一种方法是在服务器端通过 HTTPS 发送请求并在 401 错误的情况下返回带有错误详细信息的身份验证令牌来处理它。
请求您查看此post 了解更多信息。
此外,目前您无法区分 iOS 中的这两个错误(401 和 408 错误),因为我可以在官方 Apache Cordova 错误跟踪系统中看到此缺陷仍然存在。请求您查看此bug
【讨论】:
以上是关于Ajax 错误回调未针对 iPhone 触发的主要内容,如果未能解决你的问题,请参考以下文章
iPhone:SKPaymentQueue addPayment 啥时候触发了 applicationWillResignActive 回调?