2

私は Javascript で書かれた 100% 有効な Ajax モデルを持っており、Get メソッドまたは Post メソッド、通信するページ、そのページに送信する文字列、自分のページのどの要素をいじっているのかなど、いくつかの入力を使用しています。私は私の応答を受け取ります。問題は、要求を非同期 (したがって Ajax) に設定すると、onreadystatechange イベントで IE が「この操作を完了するために必要なデータはまだ利用できません」というエラーを返すことです。ステータスは 200 です。Ajax は非同期であるため、Firefox または Chrome ではエラーは発生しません。

Post メソッドのスニペットを次に示します。

xmlhttp.open("POST", commPage, true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        j = xmlhttp.responseText;
        i.innerHTML = j;
    }
}
xmlhttp.send(str);

編集:IEでは、ActiveXコントロールを使用していることを指摘する必要があります-> Msxml2.XMLHTTPまたはMicrosoft.XMLHTTP、または最初にtrueを返す方。

4

3 に答える 3

1

うーん

onreadystatechange 関数の外で、まだ存在するかどうかを確認するために responsetext を呼び出しましたが、まだ存在しない場合はそれを行うことができないため、いくつかのことを再構築する必要がありました。すべて問題ありませんが、これが問題の原因となったスクリプトでした

ajaxRequest(){
    [...]
}
if(xmlhttp.responseText){
    myFunc();
}
于 2008-12-19T03:34:46.087 に答える
0

そのエラーが発生したら、タイムアウトを設定して解決します! 多分あなたは同じことを試すことができます!

乾杯

于 2011-04-12T14:27:47.617 に答える
-1

それがあなたの場合かどうかはわかりませんが、問題が見つかるまで3時間このエラーに苦しんでいます。Webサービスクラスは、クライアントスクリプトからメソッドを呼び出すことができるScriptService属性で装飾されていませんでした。IEはエラーに厳密であり、他のブラウザが無視するものをすべて報告するため、IEのせいにはしません。IEはデバッグに適しています。お役に立てれば。ええと...あなたの投稿はとても古いので、おそらくあなたではないでしょう。

于 2009-10-06T22:25:20.423 に答える