0

Chrome 拡張機能を作成していますが、Ajax リクエストの応答が "ready" (ステータス 200 および readystate 4) として 1 回ではなく 4 回返され、ステージ 1 ~ 3 を通過しません。代わりに 4 かける 4 。ユーザーに1回ではなく4回警告しているので、これは私にとって悪いことです。

私のコードは単純なJavaScriptです

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    console.log(xmlhttp.readyState + xmlhttp.status);
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        if (xmlhttp.response) checkForAlertTab(xmlhttp.response);
        else console.log('false');
    }
}
xmlhttp.open("POST", "http://myserver.php", true);
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(sendToServer);

サーバー内の私のコードは、データベースからデータを取得し、それをエコー バックする php にすぎません。応答は素晴らしくダンディです (情報はそこにあります)。これの原因ですか?

4

1 に答える 1

-1

Chrome 拡張機能で jQuery を使用し、$.ajax を使用しないのはなぜですか! 軽量で、簡単に操作できます。

http://api.jquery.com/jQuery.ajax/

とにかく、上記の問題の考えられる理由 - あなたの xmlhttp オブジェクトはグローバルであるため、おそらく chrome は ajax post を呼び出すたびに、それを置き換える代わりに新しい onreadystatechange を割り当てます。それは本当に呼び出しの数に依存します。

于 2012-12-07T21:57:46.450 に答える