未捕获的错误:InvalidStateError:使用AJAX的DOM异常11?

bny*_*ynn 7 javascript php 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();
}
Run Code Online (Sandbox Code Playgroud)

代码运行正常,PHP返回正确的内容.但是,Chrome的控制台出错:

未捕获错误:InvalidStateError:DOM异常11

它指向这一行:

if(conn.status === 200 && conn.readyState === 4){

我究竟做错了什么?

Eri*_*ski 14

错误:

Uncaught Error: InvalidStateError: DOM Exception 11
Run Code Online (Sandbox Code Playgroud)

意味着您要求状态处于错误状态.在readyState为0或1期间,conn.status不可用.

你的问题是当readyState为0和1时你正在使用conn.status.

您需要添加代码以确保在不适当的状态下不查询conn.status,如下所示:

if(conn.readyState === 4 && conn.status === 200){
Run Code Online (Sandbox Code Playgroud)

那么你的代码只会在适当的时候查询conn.status.

参考:

为什么这段js会抛出DOM异常?