2016-04-28 11 views
0

WebプロジェクトではAjaxを多く使用していますが、今は完全に理解したいと思います。私はこの問題に遭遇しました。説明Ajaxコードの注文

function loadDoc() { 
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
    if (xhttp.readyState == 4 && xhttp.status == 200) { 
    document.getElementById("demo").innerHTML = xhttp.responseText;//get response 
    } 
    }; 
    xhttp.open("GET", "ajax_info.txt", true); 
    xhttp.send();//send request 
} 

コードを見てください。私の論理では、最初にリクエストを送信してから、後でレスポンスを得る必要があると思います。 なぜajaxコードでは、リクエストを送信する前に応答を得るのですか? ここに何か不足していますか? ありがとうございます!

答えて

0

この部分:

xhttp.onreadystatechange = function() { 
    if (xhttp.readyState == 4 && xhttp.status == 200) { 
    document.getElementById("demo").innerHTML = xhttp.responseText;//get response 
    } 
    }; 

は、コールバック関数(非同期)を定義します。この関数は、xmlhttprequestオブジェクトの状態が変更されたときにのみ呼び出されます(イベントにアタッチされています)。呼び出し自体を行う前にコールバック関数を定義する必要があります(xhttp.open)。それ以外の場合は何をすべきか分かりませんが、コード自体はxmlrequestobjectの状態が変わるまで実行されません。