gpt4 book ai didi

javascript - ajax 调用在 IE11 和 chrome 中无法正常工作

转载 作者:行者123 更新时间:2023-11-28 00:37:04 26 4
gpt4 key购买 nike

计划很简单,javascript 发送 ajax GET 请求到文件 'localhost/test/php/test.php?a=' 。 test.php 文件只是回显 $_GET['a'] 。然后 Ajax 响应被用作某些 div 的innerHTML。

这个工作在 Firefox 上工作得很漂亮并且符合预期,但在 Chrome 和 IE11 上它只是在循环的最后一次迭代中加载页面:

HTML

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='Type=text/html; charset=utf-8'>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
Text will appear here:
<div></div>
<script src="js/script.js"></script>
</body>
</html>

Javascript

window.onload = function () {
test.init();
};

var test = {
init: function () {
var ajax = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
for ( var a = 0 ; a < 100 ; a++) {
ajax.open('GET','php/test.php?a='+a,false);
ajax.send();
ajax.onreadystatechange = function () {
if (this.status == 200 && this.readyState == 4) {
var div = document.getElementsByTagName('div');
div[0].innerHTML = ajax.responseText;
}
};
}
}
};

PHP

<?php
$a = $_GET['a'];

echo $a;
?>

我需要更改什么才能使其在 IE 和 Chrome 上也正常工作?

最佳答案

您应该每次通过循环创建一个新的 XHR,而不是重复使用同一个。

var test = {
init: function () {

for ( var a = 0 ; a < 100 ; a++) {
var ajax = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
ajax.open('GET','php/test.php?a='+a,false);
ajax.send();
ajax.onreadystatechange = function () {
if (this.status == 200 && this.readyState == 4) {
var div = document.getElementsByTagName('div');
div[0].innerHTML = this.responseText;
}
};
}
}
};

请注意,我还将 ajax.responseText 更改为 this.responseText。在回调中,ajax 将是最后创建的 XHR,而不是此响应引用的 XHR,因为 Javascript infamous Loop issue?

关于javascript - ajax 调用在 IE11 和 chrome 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28377424/

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