Ajax 请求未加载新数据

发布于 2024-11-07 00:54:05 字数 1106 浏览 0 评论 0原文

我的应用程序使用轮询来更新音乐播放器的状态。我使用 setInterval 每半秒进行一次 Ajax 调用来执行此操作。它适用于许多浏览器(Chrome、Firefox、Safari...),除了 Nook color 的浏览器。当页面加载时,它会更新正确的信息,但之后它总是加载相同的信息。使用 alert 确认了这一点。这是原始代码

函数 getStatus() {

<块引用> <块引用>

请求 = new XMLHttpRequest();

request.open("GET", SOME_URL, true);

request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

request.onreadystatechange = function () {

<块引用>

if (request.readyState === 4 && request.status === 200)

<块引用> <块引用>

updateStatus(request.responseText);

};

请求.send()

}

setInterval(getStatus, 500);

有什么想法为什么它总是加载相同的信息(它最初获取的信息)?

另外:如果清除缓存,它只会加载最新信息。这个 Nook 已获得 root 权限,并且还装有 Firefox,并且可以正常工作。执行此操作的是 Nook 本机浏览器(有根或无根)。

My application uses polling to update the status of a music player. I'm using setInterval to make an Ajax call every half a second to do this. It works on many browsers (Chrome,Firefox, Safari... ) except the Nook color's browser. When the page loads it updates the correct information, but after that it always loads the same information. This was confirmed using alert. Here's the original code

function getStatus() {

request = new XMLHttpRequest();

request.open("GET", SOME_URL, true);

request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

request.onreadystatechange = function () {

if (request.readyState === 4 && request.status === 200)

updateStatus(request.responseText);

};

request.send()

}

setInterval(getStatus, 500);

Any ideas why it is always loading the same info (the info it fetches initially) ?

Also: it only loads the most current information if you clear the cache. This Nook was rooted and also had Firefox and it would work just fine. It's the Nook native browser that is doing this (rooted or unrooted).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悲歌长辞 2024-11-14 00:54:05

Internet Explorer 有一个奇怪的怪癖,它会缓存 AJAX 内容。我想您在 Nook 浏览器中也遇到了同样的问题。解决方案是添加一个“缓存破坏者”参数,该参数基本上只是一个随机参数,因此 URL 会被重新处理:

"SOME_URL?random=" + Math.random()

Internet Explorer has a weird quirk where it caches AJAX content. I imagine you are seeing the same issue in the Nook browser. The solution is to add a "cache buster" parameter, which is basically just a random parameter so the URL is treated freshly:

"SOME_URL?random=" + Math.random()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文