Ajax > onreadystatechange - 打开/发送 > 命令完全任意?
Posted
技术标签:
【中文标题】Ajax > onreadystatechange - 打开/发送 > 命令完全任意?【英文标题】:Ajax > onreadystatechange - open/send > order totally arbitrary? 【发布时间】:2013-05-26 18:47:58 【问题描述】:我有一个“附带”的小问题:
当使用 Ajax 发送请求时……open 必须先于 send,当然……但是 onreadystatechange 分配?
在打开请求对象之前、发送之后还是在两者之间进行逻辑设置?
让他们回来'n'ya头脑:
// Using POST
XMLHttp.open('POST', url, true);
XMLHttp.onreadystatechange = RequestState;
XMLHttp.send(parameter);
【问题讨论】:
【参考方案1】:一般来说,如果你关心的唯一 readyState 是 4,那么如果 onreadystatechange 事件处理程序在调用 open() 之前分配,在 open() 和 send() 之间,它并没有真正的区别,或在调用 send() 之后。以下是 readyState 的可能值:
0 - 未初始化。尚未调用 open() 方法。 1 - 打开。已调用 open() 方法,但尚未调用 send()。 2 - 已发送。已调用 send() 方法,但未收到任何响应。 3 - 接收。已检索到一些响应数据。 4 - 完成。所有响应数据均已检索并可用。
通过在调用 open 方法之前定义 onreadystatechange,它能够检测到从 0 到 4 的每一个状态变化。如果在 open 方法之后定义,那么只会检测到状态 1 到 4。出于这个原因,通常最好将 onreadystatechange 赋值放在 open() 之前。
需要注意的一点是,在 Internet Explorer 7 中引入 onreadystatechange 时,您必须设置事件处理程序 after calling open,否则会导致错误。但这已在 IE 的更高版本中得到修复。
【讨论】:
以上是关于Ajax > onreadystatechange - 打开/发送 > 命令完全任意?的主要内容,如果未能解决你的问题,请参考以下文章