我运行一个简单的AJAX请求:
function makePages(num) {
var conn = new XMLHttpRequest();
conn.onreadystatechange = function() {
if (conn.status === 200 && conn.readyState === 4) { //error here
$('#oldPost').before(conn.responseText);
}
else{
return
}
}
conn.open('GET','includes/feedExtra.php?num=' + num);
conn.send();
}
代码正常运行,PHP返回正确的内容。然而,在Chrome的控制台有一个错误:
Uncaught Error: InvalidStateError: DOM Exception 11
它指向这一行:
if (conn.status === 200 &&conn.readyState === 4) {
我做错了什么?
错误:
Uncaught Error: InvalidStateError: DOM Exception 11
表示您请求的状态是错误的。readyState为0或1时,conn.status不可用。
您的问题是当readyState为0和1时,您正在使用conn.status。
您需要添加代码以确保conn.status不会以不适当的状态进行查询,如下所示:
if(conn.readyState === 4 && conn.status === 200){
那么你的代码只会在适当的时候查询conn.status。
裁判:
为什么这段js抛出一个DOM异常?
试试这个:
conn.open('GET','includes/feedExtra.php?num=' + num, false);
false
使请求同步,true
/default为异步。
在您的情况下,它默认为true
,这意味着您的条件(conn.status === 200 && conn.readyState === 4)
中的属性尚未可用。在电话结束之前都是。
希望这对你有所帮助。