jQuery ajaxError参数 详细整理

前言

ajax是现在和服务器主流交互,完全不能少的技术。但很多时候我们对这个错误的原因不太明白,比如初学者最容易犯的错就是,为什么参数传不到后端,一看错误信息,又不知道是什么意思。导致浪费大量时间。现在整理了一份详细的ajaxError参数说明文档。希望大家有用。


ajax原理图
这里写图片描述


监听错误demo

$(document).ajaxError( function (event, XMLHttpRequest, ajaxOptions, thrownError) {
 // thrownError 只有当异常发生时才会被传递 this;
 alert("Error requesting " + ajaxOptions.url + ": " + XMLHttpRequest.status + " " + XMLHttpRequest.statusText);
 } );

event 对象详解

当在页面上的任何Ajax请求发生某些事件(如初始化或完成)时,这些方法将注册程序。全局事件,如果每个Ajax请求global产物jQuery.ajaxSetup()是true,它是默认。注意:跨域脚本或JSONP请求不会触发全局事件,无论其值如何global。

事件含义
.ajaxComplete()注册在Ajax请求完成时调用的处理程序。
.ajaxError()当Ajax请求完成并发生错误时,注册要调用的处理程序。
.ajaxSend()在发送Ajax请求之前附加要执行的函数。
.ajaxStart()注册第一个Ajax请求开始时调用的处理程序。
.ajaxStop()当所有Ajax请求完成时,注册要调用的处理程序。
.ajaxSuccess()当Ajax请求成功完成时,附加要执行的函数。

HMLHttpRequest 对象详解

与传统Web应用中发送请求不同,Ajax 必须以编程方式来发送请求。在请求发送出去之后,服务器相应会在适当的时候返回,但客户端浏览器不会自动加载这种异步响应,程序必须先调用HMLHttpRequest对象的responseText或responseXML来获取服务器响应,再通过DOM操作将服务器响应动态加载到当前页面中。


XMLHttpRequest.readyState

该属性用于获取XMLHttpRequest对象的处理状态。

状态含义
0(未初始化) (XMLHttpRequest)对象已经创建,但还没有调用open()方法。
1(载入)已经调用open() 方法,但尚未发送请求。
2(载入完成)send()方法执行完成,已经接收到全部响应内容 。
3(交互)对象开始读取服务器的响应。
4(完成)响应内容解析完成,可以在客户端调用了。

XMLHttpRequest.status

该属性是服务器返回的状态码,只有当服务器的响应已经完成时,才会有该状态码。也就是说,XMLHttpRequest的readyState为4,才会有状态码。


1xx - 信息提示
这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。

状态含义
100Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新)
101(Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)

2xx - 成功
这类状态代码表明服务器成功地接受了客户端请求。

状态含义
200OK 一切正常,对GET和POST请求的应答文档跟在后面。
201Created 服务器已经创建了文档,Location头给出了它的URL。
203Non-Authoritative Information 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝,非权威性信息(HTTP 1.1新)
204No Content 没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205Reset Content 没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容(HTTP 1.1新)。
206Partial Content 客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1新)。

3xx - 重定向
客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。

状态含义
300Multiple Choices 客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。
301Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
302Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”。出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求 http://host/~user (缺少了后面的斜杠),有的服务器返回301,有的则返回302。严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。请参见307。
303See Other 类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取(HTTP 1.1新)。
304Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
305Use Proxy 客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP 1.1新)。
307Temporary Redirect 和302(Found)相同。许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码:当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只能跟随对GET请求的重定向。(HTTP 1.1新)

4xx - 客户端错误

发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。

一级状态二级状态含义
400Bad Request 请求出现语法错误。
401Unauthorized 访问被拒绝,客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。IIS 定义了许多不同的 401 错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在 IIS 日志中显示:
401.1登录失败。
401.2服务器配置导致登录失败。
401.3由于 ACL 对资源的限制而未获得授权。
401.4筛选器授权失败。
401.5ISAPI/CGI 应用程序授权失败。
401.7访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。
403Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。禁止访问:IIS 定义了许多不同的 403 错误,它们指明更为具体的错误原因:
403.1执行访问被禁止。
403.2读访问被禁止。
403.3写访问被禁止。
403.4要求 SSL。
403.5要求 SSL 128。
403.6IP 地址被拒绝。
403.7要求客户端证书。
403.8站点访问被拒绝。
403.9用户数过多。
403.10配置无效。
403.11密码更改。
403.12拒绝访问映射表。
403.13客户端证书被吊销。
403.14拒绝目录列表。
403.15超出客户端访问许可。
403.16客户端证书不受信任或无效。
403.17客户端证书已过期或尚未生效。
403.18在当前的应用程序池中不能执行所请求的 URL。这个错误代码
403.19不能为这个应用程序池中的客户端执行 CGI。这个错误代码为 IIS 6.0 所专用。
403.20Passport 登录失败。这个错误代码为 IIS 6.0 所专用。
404Not Found 无法找到指定位置的资源。这也是一个常用的应答。
404.0(无) – 没有找到文件或目录。
404.1无法在所请求的端口上访问 Web 站点。
404.2Web 服务扩展锁定策略阻止本请求。
404.3MIME 映射策略阻止本请求。

5xx-服务器错误
服务器由于遇到错误而不能完成该请求。

一级状态二级状态含义
500内部服务器错误。
500.12应用程序正忙于在Web服务器上重新启动。
500.13Web服务器太忙。
500.15不允许直接请求Global.asa。
500.16UNC授权凭据不正确。这个错误代码为IIS6.0所专用。
500.18URL授权存储不能打开。这个错误代码为IIS6.0所专用。
500.100内部ASP错误。
501页眉值指定了未实现的配置。
502Web服务器用作网关或代理服务器时收到了无效响应。
502.1CGI应用程序超时。
502.2CGI应用程序出错。application.
503服务不可用。这个错误代码为IIS6.0所专用。
504网关超时。
505HTTP版本不受支持。

FTP
1xx-肯定的初步答复
这些状态代码指示一项操作已经成功开始,但客户端希望在继续操作新命令前得到另一个答复。

状态含义
110重新启动标记答复。
120服务已就绪,在nnn分钟后开始。
125数据连接已打开,正在开始传输。
150文件状态正常,准备打开数据连接。

2xx-肯定的完成答复
一项操作已经成功完成。客户端可以执行新命令。

状态含义
200命令确定。
202未执行命令,站点上的命令过多。
211系统状态,或系统帮助答复。
212目录状态。
213文件状态。
214帮助消息。
215NAME系统类型,其中,NAME是AssignedNumbers文档中所列的正式系统名称。
220服务就绪,可以执行新用户的请求。
221服务关闭控制连接。如果适当,请注销。
225数据连接打开,没有进行中的传输。
226关闭数据连接。请求的文件操作已成功(例如,传输文件或放弃文件)。
227进入被动模式(h1,h2,h3,h4,p1,p2)。
230用户已登录,继续进行。
250请求的文件操作正确,已完成。
257已创建“PATHNAME”。

3xx-肯定的中间答复
该命令已成功,但服务器需要更多来自客户端的信息以完成对请求的处理。

状态含义
331用户名正确,需要密码。
332需要登录帐户。
350请求的文件操作正在等待进一步的信息。

4xx-瞬态否定的完成答复
该命令不成功,但错误是暂时的。如果客户端重试命令,可能会执行成功。

状态含义
421服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。
425无法打开数据连接。
426Connectionclosed;transferaborted.
450未执行请求的文件操作。文件不可用(例如,文件繁忙)。
451请求的操作异常终止:正在处理本地错误。
452未执行请求的操作。系统存储空间不够。

5xx-永久性否定的完成答复
该命令不成功,错误是永久性的。如果客户端重试命令,将再次出现同样的错误。500语法错误,命令无法识别。这可能包括诸如命令行太长之类的错误。

状态含义
501在参数中有语法错误。
502未执行命令。
503错误的命令序列。
504未执行该参数的命令。
530未登录。
532存储文件需要帐户。
550未执行请求的操作。文件不可用(例如,未找到文件,没有访问权限)。
551请求的操作异常终止:未知的页面类型。
552请求的文件操作异常终止:超出存储分配(对于当前目录或数据集)。
553未执行请求的操作。不允许的文件名。

textStatus 对象详解

返回的是字符串类型,表示返回的状态,根据服务器不同的错误。

状态含义
timeout超时
error错误
abort中止
parsererror解析错误
success成功
notmodified服务器告诉客户,原来缓冲的文档还可以继续使用。
null链接错误

ajaxOptions 对象详解

请求ajax发送的参数。

状态类型含义
urlString(默认: 当前页地址) 发送请求的地址。
typeString(默认: “GET”) 请求方式 (“POST” 或 “GET”), 默认为 “GET”。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。
timeoutNumber设置请求超时时间(毫秒)。此设置将覆盖全局设置。
asyncBoolean(默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
beforeSendFunction发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。function (XMLHttpRequest) {this; // the options for this ajax request}
cacheBoolean(默认: true) jQuery 1.2 新功能,设置为 false 将不会从浏览器缓存中加载请求信息。
completeFunction请求完成后回调函数 (请求成功或失败时均调用)。参数: XMLHttpRequest 对象,成功信息字符串。function (XMLHttpRequest, textStatus) {this; // the options for this ajax request}
contentTypeString(默认: “application/x-www-form-urlencoded”) 发送信息至服务器时内容编码类型。默认值适合大多数应用场合。
dataObject,String发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:[“bar1”, “bar2”]} 转换为 ‘&foo=bar1&foo=bar2’。
dataTypeString预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数参数传递,可用值: “xml”: 返回 XML 文档,可用 jQuery 处理。”html”: 返回纯文本 HTML 信息;包含 script 元素。”script”: 返回纯文本 JavaScript 代码。不会自动缓存结果。”json”: 返回 JSON 数据 。”jsonp”: JSONP 格式。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
errorFunction(默认: 自动判断 (xml 或 html)) 请求失败时将调用此方法。这个方法有三个参数:XMLHttpRequest 对象,错误信息,(可能)捕获的错误对象。function (XMLHttpRequest, textStatus, errorThrown) { // 通常情况下textStatus和errorThown只有其中一个有值 this; // the options for this ajax request}
globalBoolean(默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 。可用于控制不同的Ajax事件
ifModifiedBoolean(默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。
processDataBoolean(默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并非字符串) 以配合默认内容类型 “application/x-www-form-urlencoded”。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
successFunction请求成功后回调函数。这个方法有两个参数:服务器返回数据,返回状态function (data, textStatus) { // data could be xmlDoc, jsonObj, html, text, etc…this; // the options for this ajax request}

errorThrown 对象详解

也是字符串类型,表示服务器抛出返回的错误信息,如果产生的是HTTP错误,那么返回的信息就是HTTP状态码对应的错误信息,比如404的Not Found,500错误的Internal Server Error。


补充信息

是否异步请求使用

async 为 true 或 false。

async=true 时,JavaScript 无需等待服务器的响应,可以在等待服务器响应的同时执行其他脚本,当响应完成后再对返回的数据进行处理,所以,AJAX 请求与其他脚本的执行是分开的,互不影响。

async=false 时,JavaScript 会等到服务器响应完成后才继续执行其他脚本,如果服务器繁忙或缓慢,JavaScript 会一直等待,可能会挂起或停止。这种方式只适用于一些小而简单的请求。

不推荐使用async = false,但是对于一些小的请求,这可以确定。
请记住,JavaScript将不会继续执行,直到服务器响应准备就绪。如果服务器忙或慢,应用程序将挂起或停止。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值