gpt4 book ai didi

Ajax 调用被浏览器取消

转载 作者:行者123 更新时间:2023-12-04 16:01:07 24 4
gpt4 key购买 nike

我正在使用 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 状态代码?

最佳答案

原因可能是您使用的 http 服务器和浏览器的组合。这似乎不是 PrototypeJS 库的错误。

多个来源指出,HTTP 连接的 keep-alive 参数似乎在 Safari 中被破坏(参见 hereherehere )。在 Apache 上,他们建议将此添加到配置中:

BrowserMatch "Safari" nokeepalive

(请检查您的服务器文档中的适当语法)。

如果 Safari 对与您的服务器的 HTTP 持久连接处理不当,它可能会解释您的体验。

如果它对您来说不太复杂,我会尝试另一个 HTTP 服务器,每个操作系统上都有很多可用的。

但是,我们缺乏一些信息来完全回答您的答案。服务器问题是一个主要问题,但可能还有其他问题。很高兴知道它是否在其他浏览器中执行相同的操作(带有 Firebug 的 Firefox 将显示此类信息,Chrome、Opera 和 IE 具有开发内置工具箱)。另一个有效的问题是每秒执行此 AJAX 请求的频率(如果相关)。

关于Ajax 调用被浏览器取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7506376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com