Ajax中XMLHttpRequest对象的ReadyState属性值列表

来源:互联网 发布:js阻止用户关闭浏览器 编辑:程序博客网 时间:2024/05/02 05:00

readystate取值 描述 
0 描述一种"未初始化"状态;此时,已经创建一个xmlhttprequest对象,但是还没有初始化。 
1 描述一种"发送"状态;此时,代码已经调用了xmlhttprequest open()方法并且xmlhttprequest已经准备好把一个请求发送到服务器。 
2 描述一种"发送"状态;此时,已经通过send()方法把一个请求发送到服务器端,但是还没有收到一个响应。 
3 描述一种"正在接收"状态;此时,已经接收到http响应头部信息,但是消息体部分还没有完全接收结束。 
4 描述一种"已加载"状态;此时,响应已经被完全接收。

  

status属性:这个status属性描述了http状态代码,而且其类型为short。而且,仅当readystate值为3(正在接收中)或4(已加载)时,这个status属性才可用。当readystate的值小于3时试图存取status的值将引发一个异常。
  

responsetext属性:这个responsetext属性包含客户端接收到的http响应的文本内 容。当readystate值为0、1或2时,responsetext包含一个空字符串。当readystate值为3(正在接收)时,响应中包含客户 端还未完成的响应信息。当readystate为4(已加载)时,该responsetext包含完整的响应信息。
  

statustext属性:这个statustext属性描述了http状态代码文本;并且仅当readystate值为3或4才可用。当readystate为其它值时试图存取statustext属性将引发一个异常。

这个就解决了我当时的疑问:为什么xmlhttp.readystate==4一定要是4呢,是1000不行么,这就告诉我,不行!。

问题2:至于那个status==200,这里有个解释:ajax中,xmlhttprequest对象的status属性一般用来返回服务器的http状态码。status为200表示“成功”,status为404代表“页面未找到”。

很多书上都是这样写的,一点也不错。但是,有时候,特别是刚开始学ajax的时候,可能会将代码直接在本地运行。这样就出现问题了。如果在本地运行

(c:ajax helloworld.htm),那么status属性不管是在“成功”还是“页面未找到”的情况下,都返回的是0,而不是200和404。这个时候如果 还

用if(xmlhttp.status==200)来判断运行,则会毫无结果。所以如果要在本地测试,最好写成if(xmlhttp.status== 200 || xmlhttp.status==0)的形式来判断。

这里有几个参数

xmlhttprequest对象的status属性的取值长整形标准http状态码,定义如下:

 


问题3:ajax里的onreadystatechange的作用

发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态,xmlhttprequest对象提供了onreadystatechange事件实现这一功能。这类似于回调函数的做法。 
onreadystatechange事件可指定一个事件处理函数来处理xmlhttprequest对象的执行结果,如: 
ajaxobj=createajaxobject(); 
var url="/mytodoes/fetchtext?id="+id; 
ajaxobj.open("get",url,true); 
ajaxobj.onreadystatechange=changetabcallback; 
ajaxobj.send(null);


onreadystatechange事件是在readystate属性发生改变时触发的,readystate的值表示了当前请求的状态,在事件处理程序中可以根据这个值来进行不同的处理。 readystate有五种可取值0:尚未初始化,1:正在加载,2:加载完毕,3:正在处理;4:处理完毕。一旦readystate属性的值变成了4,就可以从服务器返回的响应数据进行访问了。 
通常在事件中判断readystate的值是在请求完毕时才做处理,如: 
function changetabcallback(){ 
if(ajaxobj.readystate==4){ 
// 下一步验证 


status存储了服务器端返回的http请求响应代码,它表示请求的处理结果,常见响应代码的含义如右。 
在ajax开发中,最常用就是200这个响应码,代码如下: 
function changetabcallback(){ 
if(ajaxobj.readystate==4){ 
if(ajaxobj.status==200){ 
// 服务端返回了正确数据,开始响应处理 



http状态码 含义 
200 请求成功 
202 请求被接受但处理未完成 
400 错误请求 
404 请求资源未找到 
500 内部服务器错误

原创粉丝点击