我无法弄清楚为什么会这样,并且没有它的文档:
<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>
<body>
<h1>HideSite</h1>
<script>
var ajax;
if (window.XMLHttpRequest) {
ajax = new XMLHttpRequest();
} else {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
ajax.onreadystatechange = function() {
location.replace(ajax.responseText);
}
if (navigator.userAgent == 'code') {
ajax.open("POST", "location.txt", true);
ajax.send();
}
</script>
</body>
</html>
location.txt包含文件的位置。
而不是replace()
我插入了这个:alert(ajax.responseText)
。它做了三次,只有在第三次窗口实际上包含任何东西。
if (ajax.responseText != undefined && ajax.responseText != "") {
alert(ajax.responseText);
}
当我添加它时,它只执行了两次,两次都包含正确的字符串
答案 0 :(得分:0)
在AJAX调用期间,onreadystatechange
事件会多次被点击;这些点击中的大多数实际上不会发送任何响应文本。准备状态如下:
0: request not initialized
1: server connection established
2: request received
3: processing request
4: request finished and response is ready
就像你已经说过“每次状态更改”而不是“当响应准备就绪”时,你的AJAX通话往往还没有收到响应。我建议修改你的事件,以包含一个if
语句,如下所示:
ajax.onreadystatechange = function() {
if (ajax.readyState == 4) { //WHEN RESPONSE IS READY
location.replace(ajax.responseText);
}
}