7

単純な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){

私は何が間違っているのですか?

4

2 に答える 2

14

エラー:

Uncaught Error: InvalidStateError: DOM Exception 11

間違った状態でステータスを要求していることを意味します。conn.statusは、readyStateが0または1の場合は使用できません。

問題は、readyStateが0と1のときにconn.statusを使用していることです。

次のように、conn.statusが不適切な状態でクエリされないようにするためのコードを追加する必要があります。

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

そうすると、コードは適切なタイミングでのみconn.statusを照会します。

参照:

このjsがDOM例外をスローするのはなぜですか?

于 2013-03-25T19:30:52.037 に答える
2

これを試して:

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

falseリクエストを同期しtrueます。/デフォルトは非同期です。

あなたの場合、それはデフォルトでに設定されています。trueこれは、条件付きのプロパティがまだ(conn.status === 200 && conn.readyState === 4)利用できないことを意味します。彼らは電話の後までになります。

うまくいけば、それはあなたにいくつかの助けになります。

また、ここでこのディスカッションをチェックしてください。

于 2013-03-13T23:59:02.787 に答える