我正在使用Prototype JS框架进行Ajax调用。这是我的代码:
new Ajax.Request( '/myurl.php', {method: 'post', postBody: 'id='+id+'&v='+foo, onSuccess: success, onFailure: failed} );
function success(ret) {
console.log("success",ret.readyState, ret.status);
}
function failed(ret) {
console.log("failed",ret.readyState, ret.status);
}
大多数情况下,这个方法运行良好,成功函数会返回200状态码。但在Safari上,大约有5%的情况下,成功函数会返回0状态码。此时,在Web检查器的网络选项卡中,Ajax调用的状态将显示为“已取消”。通过服务器日志可以确认,请求从未到达服务器。似乎Ajax请求被立即取消,甚至没有尝试连接服务器。目前还没有可靠的复现方法,它似乎是随机发生的。我重复20次,只出现了一次。
有人知道什么原因会导致Ajax调用被取消或返回0状态码吗?