ajaxreadyState五种状态及status状态码
宫崎骏 作品ajaxreadyState五种状态及status状态码
根据资料整理了⼀下ajax的readyState的五种状态和status的⼀些状态码:
AJAX请求是异步执⾏的,也就是说,要通过回调函数获得响应。除了IE浏览器,写AJAX主要是依靠XMLHttpRequest对象:
function success(text) {
var textarea = ElementById('test-response-text');
textarea.value = text;
梦见死人和我说话}
function fail(code) {
var textarea = ElementById('test-response-text');
textarea.value = 'Error code: ' + code;
}
var request = new XMLHttpRequest(); // 新建XMLHttpRequest对象
if (adyState === 4) { // 成功完成
// 判断响应结果:
if (request.status === 200) {
// 成功,通过responseText拿到响应的⽂本:
return sponseText);
} else {
// 失败,根据响应码判断失败原因:
return fail(request.status);
}
} else {
// HTTP请求还在继续...
}
}
// 发送请求:
request.open('GET', '/api/categories');
request.send();
alert('请求已发送,请等待响应...');
当创建XMLHttpRequest对象后,要先设置onreadystatechange的回调函数。在回调函数中,通常我们只需通过readyState === 4判断请求是否完成,如果已完成,再根据status === 200判断是否是⼀个成功的响应。
这边ajax的 readyState有五种状态:
0 - (未初始化)
(XMLHttpRequest)对象已经创建,但还没有调⽤open()⽅法。值为0表⽰对象已经存在,否则浏览器会报错:对象不存在。
1 - (载⼊/正在发送请求)
对XMLHttpRequest对象进⾏初始化,即调⽤open()⽅法,根据参数(method,url,true),完成对象状态的设置。并调⽤send()⽅法开始向服务端发送请求。值为1表⽰正在向服务端发送请求。
2 - (载⼊完成/数据接收)
此阶段接收服务器端的响应数据。但获得的还只是服务端响应的原始数据,并不能直接在客户端使⽤。值为2表⽰send()⽅法执⾏完成,已经接收完全部响应数据。并为下⼀阶段对数据解析作好准备。
3 - (交互/解析数据)正在解析响应内容
此阶段解析接收到的服务器端响应数据。即根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText 或responseXML属性存取的格式,为在客户端调⽤作好准备。值为3表⽰正在解析数据。
排骨炖冬瓜的做法
4 - (后台处理完成)响应内容解析完成,可以在客户端调⽤了
此阶段确认全部数据都已经解析为客户端可⽤的格式,解析已经完成。值为4表⽰数据解析完毕,可以通过XMLHttpRequest对象的相应属性取得数据。
总之,整个XMLHttpRequest对象的⽣命周期应该包含如下阶段:
创建-0初始化请求-1发送请求-2接收数据-3解析数据-4完成 。
开发中默认使⽤”===”来避免抛出异常。
如果想把标准写法和IE写法混在⼀起,可以这么写:
var request;
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
} else {
request = new ActiveXObject('Microsoft.XMLHTTP');
}
status 状态码:
常⽤:
200:请求成功(后台处理结果ok)、303:重定向
400:请求错误、401:未授权、403:禁⽌访问、404:⽂件未到
500:服务器错误
201-206都表⽰服务器成功处理了请求的状态代码,说明⽹页可以正常访问。
200(成功)服务器已成功处理了请求。通常,这表⽰服务器提供了请求的⽹页。
201(已创建)请求成功且服务器已创建了新的资源。
202(已接受)服务器已接受了请求,但尚未对其进⾏处理。
203(⾮授权信息)服务器已成功处理了请求,但返回了可能来⾃另⼀来源的信息。
204(⽆内容)服务器成功处理了请求,但未返回任何内容。
205(重置内容)服务器成功处理了请求,但未返回任何内容。
与 204 响应不同,此响应要求请求者重置⽂档视图(例如清除表单内容以输⼊新内容)。
206(部分内容)服务器成功处理了部分 GET 请求。护士资格证分数线2013
300-3007表⽰的意思是:要完成请求,您需要进⼀步进⾏操作。通常,这些状态代码是永远重定向的。
300(多种选择)服务器根据请求可执⾏多种操作。
服务器可根据请求者来选择⼀项操作,或提供操作列表供其选择。
301(永久移动)请求的⽹页已被永久移动到新位置。服务器返回此响应时,会⾃动将请求者转到新位置。
您应使⽤此代码通知搜索引擎蜘蛛⽹页或⽹站已被永久移动到新位置。
302(临时移动)服务器⽬前正从不同位置的⽹页响应请求,但请求者应继续使⽤原有位置来进⾏以
后的请求。
会⾃动将请求者转到不同的位置。
但由于搜索引擎会继续抓取原有位置并将其编⼊索引,因此您不应使⽤此代码来告诉搜索引擎页⾯或⽹站已被移动。
303(查看其他位置)当请求者应对不同的位置进⾏单独的 GET 请求以检索响应时,服务器会返回此代码。
对于除 HEAD 请求之外的所有请求,服务器会⾃动转到其他位置。
304(未修改)⾃从上次请求后,请求的⽹页未被修改过。服务器返回此响应时,不会返回⽹页内容。
如果⽹页⾃请求者上次请求后再也没有更改过,您应当将服务器配置为返回此响应。
由于服务器可以告诉搜索引擎⾃从上次抓取后⽹页没有更改过,因此可节省带宽和开销。
305(使⽤代理)请求者只能使⽤代理访问请求的⽹页。
如果服务器返回此响应,那么,服务器还会指明请求者应当使⽤的代理。
307(临时重定向)服务器⽬前正从不同位置的⽹页响应请求,但请求者应继续使⽤原有位置来进⾏以后的请求。
会⾃动将请求者转到不同的位置。但由于搜索引擎会继续抓取原有位置并将其编⼊索引,因此您不应使⽤此代码来告诉搜索引擎某个页⾯或⽹站已被移动4XX-HTTP状态码表⽰请求可能出错,会妨碍服务器的处理。
400(错误请求)服务器不理解请求的语法。
401(⾝份验证错误)此页要求授权。您可能不希望将此⽹页纳⼊索引。
403(禁⽌)服务器拒绝请求。
404(未到)服务器不到请求的⽹页。例如,对于服务器上不存在的⽹页经常会返回此代码。
例如:www.0631abc/20100aaaa,就会进⼊404错误页⾯
405(⽅法禁⽤)禁⽤请求中指定的⽅法。
406(不接受)⽆法使⽤请求的内容特性响应请求的⽹页。
407(需要代理授权)此状态码与 401 类似,但指定请求者必须授权使⽤代理。如果服务器返回此响应,还表⽰请求者应当使⽤代理。
408(请求超时)服务器等候请求时发⽣超时。
409(冲突)服务器在完成请求时发⽣冲突。服务器必须在响应中包含有关冲突的信息。
服务器在响应与前⼀个请求相冲突的 PUT 请求时可能会返回此代码,以及两个请求的差异列表。
最爱 周慧敏410(已删除)请求的资源永久删除后,服务器返回此响应。
该代码与 404(未到)代码相似,但在资源以前存在⽽现在不存在的情况下,有时会⽤来替代 404 代码。
如果资源已永久删除,您应当使⽤ 301 指定资源的新位置。
411(需要有效长度)服务器不接受不含有效内容长度标头字段的请求。
412(未满⾜前提条件)服务器未满⾜请求者在请求中设置的其中⼀个前提条件。
413(请求实体过⼤)服务器⽆法处理请求,因为请求实体过⼤,超出服务器的处理能⼒。
414(请求的 URI 过长)请求的 URI(通常为⽹址)过长,服务器⽆法处理。
415(不⽀持的媒体类型)请求的格式不受请求页⾯的⽀持。
416(请求范围不符合要求)如果页⾯⽆法提供请求的范围,则服务器会返回此状态码。快递价格比较
417(未满⾜期望值)服务器未满⾜"期望"请求标头字段的要求。
500⾄505表⽰的意思是:服务器在尝试处理请求时发⽣内部错误。这些错误可能是服务器本⾝的错误,⽽不是请求出错。
500(服务器内部错误)服务器遇到错误,⽆法完成请求。
501(尚未实施)服务器不具备完成请求的功能。
例如,当服务器⽆法识别请求⽅法时,服务器可能会返回此代码。
502(错误⽹关)服务器作为⽹关或代理,从上游服务器收到了⽆效的响应。
503(服务不可⽤)⽬前⽆法使⽤服务器(由于超载或进⾏停机维护)。通常,这只是⼀种暂时的状态。  504(⽹关超时)服务器作为⽹关或代理,未及时从上游服务器接收请求。
505(HTTP 版本不受⽀持)服务器不⽀持请求中所使⽤的 HTTP 协议版本。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。