14

この関数を機能させようとしています。これは、パラメーターの要求を行い、関数でurlある responseText を送信しcallbackます。

readyState 1(Firebugコマンドのおかげで)にしか到達しないようです。

ここにあります:

function Request(url, callback){
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else{
    return false;
}
httpRequest.onreadystatechange = function(){
    console.log(httpRequest.readyState);
    if (httpRequest.readyState == 4) {
        callback(httpRequest.responseText);
    }
};
console.log(httpRequest, url);
httpRequest.open('GET', url, true);
httpRequest.send(null);
}
4

5 に答える 5

5

onreadystatechange の代わりに onload イベントを割り当てることで、この問題を回避しました。

function Request(url, callback){
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else{
        return false;
}

var readyStateChange = function(){
    console.log(httpRequest.readyState);

    if (httpRequest.readyState == 4) {
                callback(httpRequest.responseText);
    }
};


if (isFirefox && firefoxVersion > 3) {
    httpRequest.onload = readyStateChange;
} else {
    httpRequest.onreadystatechange = readyStateChange;
}

console.log(httpRequest, url);
httpRequest.open('GET', url, true);
httpRequest.send(null);
}
于 2009-06-08T06:05:38.730 に答える
2

ブラウザで直接アクセスして、問題の URL が実際に応答することを確認します。

別のブラウザーでテストして、同じ結果が得られますか。

何らかの形式の HTTP モニターを使用して、クライアントからサーバーへの会話を監視します (私のお気に入りはFiddlerです)

于 2009-04-15T11:41:17.283 に答える
1

Ajax リクエストがデータを返さない可能性があります (サーバー側の何らかのエラー)。これを確認するには、firebug コンソールで「show XMLHttpRequests」オプションを有効にしてみてください。

于 2009-04-15T11:35:12.523 に答える
0

私も同じ問題に直面しました。以下のURLを読んで、私は解決しました。

http://bytes.com/topic/javascript/answers/548442-ajax-readystate-1-wall

基本的に、関数を httpRequest.onreadystatechange のイベント リスナーとして割り当てると、それに変数を渡すことができません。そのため、HTTP POST 文字列内の変数をサーバー バックエンドに埋め込み、HTTP 応答からそれを取得する必要があります。

FF 3 では問題なく動作します。jQuery を使用する必要はありません。

于 2010-09-09T13:43:21.957 に答える