0

xhr.responseText を変数にしてから警告しようとしていますが、奇妙な理由でそうすることができません。

test2 = ""
function process(){
    url = "http://www.example.com/example.html"
    var xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.onreadystatechange = function() {
    if (xhr.readyState == 4){
        test2 = xhr.responseText
        }
    }
    xhr.send();
}
process();
alert(test2);

この問題について助けてくれる人に感謝します。

4

3 に答える 3

1

test2 変数がコンテンツで満たされる前に警告している (XMLHTTPRequest が完了するまでにさらに時間が必要なため)

var test2 = "";

function process(callback){
    url = "http://www.example.com/example.html"
    var xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.onreadystatechange = function() 
    {
        if (xhr.readyState == 4)
        {        
            test2 = xhr.responseText;
            callback();
        }
    }
    xhr.send();
}

process(callbackFunction);

function callbackFunction()
{
    alert(test2);
}
于 2013-07-25T12:09:08.330 に答える
1

非同期リクエストを発行しています。はalert、プロセス関数が実行された直後に起動されます。後で応答が戻ってきたときにonreadystatechange起動されます。AJAX クエリの結果に対して何かを行う予定がある場合は、onreadystatechange. このような...

 test2 = ""
function process(){
    url = "http://www.example.com/example.html"
    var xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.onreadystatechange = function() {
    if (xhr.readyState == 4){
        test2 = xhr.responseText
        alert(test2);
        }
    }
    xhr.send();
}
process();
于 2013-07-25T12:09:15.507 に答える
0

一般に、同期呼び出しは適切な方法ではありません。多分jQueryはあなたが使うことができるものですか?

例:

$.ajax({
  url: "http://www.example.com/example.html",
  success: function(data) {
    // now you can do something with the data
    alert(data);
  }
});
于 2013-07-25T12:44:44.767 に答える