我们有一个网络应用程序向后端发出ajax请求,只有在 iPhone / iPad 时才会频繁但间歇性超时,并且仅在使用一个特定移动运营商时(罗杰斯/菲多在加拿大魁北克省)。
我们在这个非常简单,纯粹的Javascript JSFiddle中完全隔离了我们的应用程序中的问题:http://jsfiddle.net/6aancdwu/
我们不知道该怎么办,在Rogers与谁联系以及他们是否愿意花时间研究这个问题。
任何人都知道原因是什么以及为什么它只发生在iOS + Rogers上? 还有什么我们可以尝试的吗? 如果有人使用iPhone和Rogers / Fido,你能用JSFiddle重现问题吗?
我们宁愿不实施自动取消和重试解决方案,因为我们的一些电话有时会有点长,我们最终会取消好的电话。
<a href="#" onclick="return go();">TEST</a>
<br><br>
<div id="output">waiting for action</div>
var count = 0;
function go() {
count = 0;
document.getElementById("output").innerHTML = "0/5";
var q1 = sendAjax();
var q2 = sendAjax();
var q3 = sendAjax();
var q4 = sendAjax();
var q5 = sendAjax();
return false;
}
function sendAjax() {
var xhr = new XMLHttpRequest();
var timer = setTimeout(function() { alert("TIMEOUT"); xhr.abort(); }, 30000);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
clearTimeout(timer);
count++;
document.getElementById("output").innerHTML = count + "/5";
if (xhr.status === 200) {
} else {
alert("ERROR, " + "status: " + xhr.status + ", statusText: " + xhr.statusText);
}
}
};
xhr.open("GET", "/echo/js/?_=" + new Date().getTime() + "&js=hello");
xhr.send();
return xhr;
}