2011-11-17 36 views
0

我只是想了解ajax函數的編碼流程。讓我舉一個簡單的例子,爲什麼不ajax fn()遵循代碼序列

function test() { alert("Hello"); alert("World");  } 

如果你運行該功能,第一個對話框會Hello和第二會World,對不對?但是爲什麼在ajax中編碼結構不會以相同的方式通過。

ajaxRequest.open("POST", "pos/write", true); 
ajaxRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 

ajaxRequest.send("user=Ram"); /* this line can be written anywhere */ 

ajaxRequest.onreadystatechange = function() { 
if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200){ 
        alert("done"); }   
// ajaxRequest.send("user=Ram"); 

,你可以看到,.send('user=Ram')上面寫&的.readyState下方,但在這兩種情況下成功運行。 這就是我想明白了,爲什麼不ajax FN()遵循代碼序列

+0

你的js看起來像是在最後缺少一些東西...... – Ben

+0

@Ben:是的,我只是寫了一些部分的js,我沒有明白這一點。 – user1010399

回答

1

你必須記住,.send()異步。在調用.send()後,您立即連接onreadystatechange處理程序,該處理程序將最終收到來自pos/write的響應。即使它在請求啓動後出現,在響應返回之前總會有時間讓它運行並連接該處理程序,XHR對象將其readyState更改爲4,並且執行您的onreadystatechange事件處理程序。

+0

哦,我看到'在響應回來之前總會有時間讓它運行並連接處理程序。你明白了。謝謝戴夫。 – user1010399