首先看一下ajax的使用场景:
$.ajax({ url:‘/Home/AjaxGetData‘, type:"post", timeout:5000, async:true, cache:true, data:"user_id=12&page=0", //发送给服务器的数据 dataType:"json", contentType:"application/x-www-form-urlencoded", beforeSend:function(){ ... //发送请求 }, success:function(data){ ... //执行状态是200时候调用 }, complete:function(){ ... //完成了一次请求调用 }, error:function (jqXHR, textStatus, errorThrown){ /* 错误信息处理 */ ... //执行状态是非200时候调用 } });
一般error函数返回的参数有三个: function(jqXHR jqXHR, String textStatus, String errorThrown)
第一个参数 jqXHR jqXHR:这里的jqXHR是一个jqXHR对象,在Jquery1.4和1.4版本之前返回的是XMLHttpRequest对象,1.5版本以后则开始使用jqXHR对象,该对象是一个超集,就是该对象不仅包括XMLHttpRequest对象,还包含其他更多的详细属性和信息。
这里主要有4个属性:
- readyState :当前状态,0-未初始化,1-正在载入,2-已经载入,3-数据进行交互,4-完成。
- status :返回的HTTP状态码,比如常见的404,500等错误代码。
- statusText :对应状态码的错误信息,比如404错误信息是not found,500是Internal Server Error。
- responseText :服务器响应返回的文本信息
第二个参数 String textStatus:返回的是字符串类型,表示返回的状态,根据服务器不同的错误可能返回下面这些信息:"timeout"(超时), "error"(错误), "abort"(中止), "parsererror"(解析错误),还有可能返回空值。
第三个参数 String errorThrown:也是字符串类型,表示服务器抛出返回的错误信息,如果产生的是HTTP错误,那么返回的信息就是HTTP状态码对应的错误信息,比如404的Not Found,500错误的Internal Server Error。
用法示例:
$.ajax({ url: ‘/AJAX请求的URL‘, success: function (data) { alert(data); }, error: function (jqXHR, textStatus, errorThrown) { /*弹出jqXHR对象的信息*/ alert(jqXHR.responseText); alert(jqXHR.status); alert(jqXHR.readyState); alert(jqXHR.statusText); /*弹出其他两个参数的信息*/ alert(textStatus); alert(errorThrown); } });