<!DOCTYPE html> <html> <head> <title> ajax </title> <script type="text/javascript"> var xhr = new XMLHttpRequest(); //属性: readyState //HTTP 请求的状态.当一个 XMLHttpRequest 初次创建时,这个属性的值从 0 开始,直到接收到完整的 HTTP 响应,这个值增加到 4 console.log("readyState:"+xhr.readyState+" Uninitialized 初始化状态。XMLHttpRequest 对象已创建或已被 abort() 方法重置。"); //事件句柄: onreadystatechange //每次 readyState 属性改变的时候调用的事件句柄函数。当 readyState 为 3 时,它也可能调用多次。 xhr.onreadystatechange = function(){ switch(xhr.readyState){ case 1: console.log("readyState:1"+" Open open() 方法已调用,但是 send() 方法未调用。请求还没有被发送。"); break; case 2: console.log("readyState:2"+" Send Send() 方法已调用,HTTP 请求已发送到 Web 服务器。未接收到响应。"); break; case 3: console.log("readyState:3"+" Receiving 所有响应头部都已经接收到。响应体开始接收但未完成。"); //status 由服务器返回的 HTTP 状态代码,如 200 表示成功,而 404 表示 "Not Found" 错误。 //当 readyState 小于 3 的时候读取这一属性会导致一个异常。 console.log("status:"+xhr.status); //这个属性用名称而不是数字指定了请求的 HTTP 的状态代码。 //也就是说,当状态为 200 的时候它是 "OK",当状态为 404 的时候它是 "Not Found"。 //和 status 属性一样,当 readyState 小于 3 的时候读取这一属性会导致一个异常。 console.log("statusText:"+xhr.statusText); console.log("responseText:"+xhr.responseText); console.log("getAllResponseHeaders():"+getAllResponseHeaders()) break; case 4: console.log("readyState:4"+" Loaded HTTP 响应已经完全接收。"); console.log("status:"+xhr.status); console.log("statusText:"+xhr.statusText); console.log("responseText:"+xhr.responseText); break; } } xhr.open('GET','jsonp.html',true); xhr.send(null); </script> </head> <body> </body> </html>