我正在运行一个简单的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控制台出错:
未捕获错误:InvalidStateError:DOM异常11
它指向这一行:
if(conn.status === 200&& conn.readyState === 4){
我做错了什么?
答案 0 :(得分:14)
错误:
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。
价:
答案 1 :(得分:2)
试试这个:
conn.open('GET','includes/feedExtra.php?num=' + num, false);
false
使请求同步,true
/ default是异步的。
在您的情况下,它默认为true
,这意味着条件(conn.status === 200 && conn.readyState === 4)
中的属性不可用尚未。他们将在电话会议之后。
希望这可以帮助你。
另外,请查看此讨论here。