gpt4 book ai didi

javascript - XMLHttpRequest 在 IE11 上很奇怪,在 Edge 和 Chrome 上没问题

转载 作者:行者123 更新时间:2023-11-28 04:36:30 24 4
gpt4 key购买 nike

我尝试执行以下操作但就我而言,它在 IE11 上不起作用?

var request = new XMLHttpRequest();

function doStuff()
{
console.log("next request");
doRequest();
}

function doRequest() {
request.open("GET","http://127.0.0.1/poll.php", true);
request.onloadend = doStuff;
request.send();
}

doRequest();

PHP 脚本 poll.php 正在休眠一秒钟。现在重点是:Egde 和 Chrome 大约每秒请求一次但 IE 却没有,它每秒向日志发送 1000 个请求,而且它们甚至没有得到执行。

如果我删除无限循环,IE 就会执行一个请求,如果是无限循环,则 IE 除了发送垃圾邮件日志外什么也不做。

希望你能理解我并给我提示,如何解决我的问题。

最诚挚的问候。

最佳答案

看来 IE 缓存了该请求,因此第二个和后续请求立即完成 - 运行代码一次后,即使第一个请求也会这样做

As a side note, I'm actually surprised other browsers don't cache XHR requests - at least, they don't seem to if the question is an accurate reflection of browser behaviour!

一种解决方案是向 URL 添加随机“搜索”(或查询)字符串

function doRequest() {
request.open("GET","http://127.0.0.1/poll.php?_"+Math.random(), true);
// ^^^^^^^^^^^^^^^^^
request.onloadend = doStuff;
request.send();
}

另一种方法是让服务器使用响应 header 进行响应,告诉浏览器“不要缓存此内容” - 对于 PHP(因为请求显然是向 PHP 发出的)

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

(无耻地“借用”https://stackoverflow.com/a/13640164/5053002 - 所以如果错了不要怪我,我已经好几年没有使用 PHP 了)

关于javascript - XMLHttpRequest 在 IE11 上很奇怪,在 Edge 和 Chrome 上没问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44157106/

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