2016-04-28 97 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 
    } 
    }; 

是定義的回調函數(異步)。此功能僅在您的對象更改狀態(您將其附加到onreadystatechange事件)時纔會調用。您需要在自己撥打電話之前定義回調函數(xhttp.open),否則它不知道該怎麼辦,但代碼本身不會運行,直到xmlrequestobject的狀態發生變化。