我只想了解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()不遵循代码序列
答案 0 :(得分:1)
您必须记住,.send()
异步。在调用.send()
之后,您立即将onreadystatechange
处理程序连接到最终将从pos/write
接收响应的同一对象上。即使它在请求启动后出现,也总是有时间运行并在响应返回之前连接该处理程序,XHR对象将其readyState
更改为4
,并且{ {1}}执行事件处理程序。