为什么ajax fn()不遵循代码序列

时间:2011-11-17 02:39:34

标签: ajax

我只想了解ajax函数的编码流程。让我举一个简单的例子,

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()不遵循代码序列

1 个答案:

答案 0 :(得分:1)

您必须记住,.send() 异步。在调用.send()之后,您立即将onreadystatechange处理程序连接到最终将从pos/write接收响应的同一对象上。即使它在请求启动后出现,也总是有时间运行并在响应返回之前连接该处理程序,XHR对象将其readyState更改为4,并且{ {1}}执行事件处理程序。