未捕获的错误:InvalidStateError: DOM Exception 11 with AJAX


Uncaught Error: InvalidStateError: DOM Exception 11 with AJAX?

我运行一个简单的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)中的属性尚未可用。在电话结束之前都是。

希望这对你有所帮助。