【发布时间】:2021-05-06 05:28:37
【问题描述】:
我有一个 Node.js express 应用程序。
在特定的视图中,我有一个经常性的 ajax post-call,它正在检查进程的状态。 在响应上,如果需要再次检查,则在再次检查之前有 5 秒的超时时间。
在桌面和移动设备上运行良好 none IOS 但是,一旦我在 iOS 手机上尝试它,它就在第三个请求中失败了。 (前两个效果很好)
我在 iPhone 上检查了不同的浏览器,每次都是一样的。
我收到以下电话回复
{"readyState": 0, "status":0, "statusText": "error"}
似乎每个 iOS 设备都是如此。但它在其他任何地方都有效(android、windows) 有什么想法可以从哪里来? 非常奇怪的是,前两个调用运行良好,然后以某种方式被阻止。
请求的JS代码 :
const checkUpdate = (amount, ref, status) => {
$.post({
type: "POST",
url: "/check-update-transaction",
data: { amount, ref, status},
headers: {
"CSRF-Token": token,
},
}).done(
(res) => {
console.log(JSON.stringify(res));
setTimeout(() => {
switch (parseInt(res.status)) {
case 1:
return checkUpdate(amount, ref, 1);
case 2:
return checkUpdate(amount, ref, 2);
case 3:
$("#circle-loader-popup").hide();
return true;
}
}, 5000);
}
).fail((error) => {
$(".status-information .main-content-loader")
.html(`A problem happened during the submission please try again `);
console.log(JSON.stringify(error));
if(error.responseJSON && error.responseJSON.notFind === true){
$("#after-first-step").hide();
}
});
};
提前致谢,
安塞尔
【问题讨论】:
-
该响应意味着 AJAX 调用尚未发送,因为试图发送它的 JS 中存在错误。如果没有看到您的 JS 代码,我们真的无法提供更多帮助
-
@RoryMcCrossan 谢谢,我看到请求没有被发送。不幸的是,日志中没有其他错误。另外,请记住,这仅在 iOS 上发生..所有其他 platorms 和 android 都在工作..我怀疑当请求太近时来自 iOS 的网络阻塞,但我不确定
-
有一个现场工作的例子会很方便。你能用一些console.logs做一个测试页面吗?
-
您实际上可以现场观看。 playground.cardano-native-token.com 用测试数据填写表格之一。当您确认提交时,您会看到它正在工作。该问题发生在 iOS iPhone 上。不在其余部分。
-
我检查过,但无法重现该问题。如果您问我,您的客户端代码没有任何问题。回复
{"readyState": 0, "status":0, "statusText": "error"}的是服务端,能发下服务端的代码吗?
标签: jquery ios ajax express mobile