2011-11-17 38 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