AJAX – onreadystatechange 事件

ajax - onreadystatechange 事件

onreadystatechange 事件

当请求被发送到服务器时,我们需要执行一些基于响应的任务。

每当 readystate 改变时,就会触发 onreadystatechange 事件。

readystate 属性存有 xmlhttprequest 的状态信息。

下面是 xmlhttprequest 对象的三个重要的属性:

属性 描述
onreadystatechange 存储函数(或函数名),每当 readystate 属性改变时,就会调用该函数。
readystate

存有 xmlhttprequest 的状态。从 0 到 4 发生变化。

  • 0: 请求未初始化
  • 1: 服务器连接已建立
  • 2: 请求已接收
  • 3: 请求处理中
  • 4: 请求已完成,且响应已就绪
status 200: "ok"
404: 未找到页面

在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。

当 readystate 等于 4 且状态为 200 时,表示响应已就绪:

实例

xmlhttp.onreadystatechange=function() { if (xmlhttp.readystate==4 && xmlhttp.status==200) { document.getelementbyid("mydiv").innerhtml=xmlhttp.responsetext; } }


注意: onreadystatechange 事件被触发 4 次(0 - 4), 分别是: 0-1、1-2、2-3、3-4,对应着 readystate 的每个变化。

使用回调函数

回调函数是一种以参数形式传递给另一个函数的函数。

如果您的网站上存在多个 ajax 任务,那么您应该为创建 xmlhttprequest 对象编写一个标准的函数,并为每个 ajax 任务调用该函数。

该函数调用应该包含 url 以及发生 onreadystatechange 事件时执行的任务(每次调用可能不尽相同):

实例

function myfunction() { loadxmldoc("/try/ajax/ajax_info.txt",function() { if (xmlhttp.readystate==4 && xmlhttp.status==200) { document.getelementbyid("mydiv").innerhtml=xmlhttp.responsetext; } });}


相关文章