Ajax> onreadystatechange - 打开/发送>订单完全武断?

时间:2013-05-31 02:39:35

标签: ajax send onreadystatechange

我有一个'偶然'的问题:

使用 Ajax 发送请求时... 打开必须先行发送,当然......但是 onreadystatechange 分配?

打开之前 - 在发送 -ing之后,在

之前进行逻辑设置?

让我们回想起来:

// Using POST
XMLHttp.open('POST', url, true);

XMLHttp.onreadystatechange = RequestState;

XMLHttp.send(parameter);

1 个答案:

答案 0 :(得分:9)

一般来说,如果你关心的唯一readyState是4,那么如果在open()和send()之间调用open()之前分配了onreadystatechange事件处理程序,它就没有什么区别,或者在调用send()之后。以下是readyState的可能值:

  
      
  • 0 - 未初始化。尚未调用open()方法。
  •   
  • 1 - 打开。已调用open()方法但尚未调用send()。
  •   
  • 2 - 已发送。已调用send()方法但未收到响应。
  •   
  • 3 - 接收。已检索到一些响应数据。
  •   
  • 4 - 完成。所有响应数据都已检索并可用。
  •   

通过在调用open方法之前定义onreadystatechange,它能够检测从0到4的每个状态变化。如果在open方法之后定义,则只检测状态1到4。因此,通常最好在open()之前放置onreadystatechange赋值。

需要注意的一点是,当在Internet Explorer 7中引入onreadystatechange时,您必须设置事件处理程序after calling open,否则会导致错误。但是在IE的更高版本中已经修复了这个问题。