jQuery ajaxError参数 详细整理

来源:互联网 发布:java 创建服务 编辑:程序博客网 时间:2024/06/13 01:23

前言

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 响应。

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

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

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

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

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

4xx - 客户端错误

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

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

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

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

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

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

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

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

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

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

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

状态 含义 421 服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。 425 无法打开数据连接。 426 Connectionclosed;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发送的参数。

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

原创粉丝点击