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

时间:2013-03-13 23:35:45

标签: php javascript 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控制台出错:

  

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

它指向这一行:

  

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

我做错了什么?

2 个答案:

答案 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。

价:

why does this piece of js throw a DOM Exception?

答案 1 :(得分:2)

试试这个:

conn.open('GET','includes/feedExtra.php?num=' + num, false);

false使请求同步,true / default是异步的。

在您的情况下,它默认为true,这意味着条件(conn.status === 200 && conn.readyState === 4)中的属性不可用尚未。他们将在电话会议之后。

希望这可以帮助你。

另外,请查看此讨论here