返回值:jQueryajaxError(handler(event, jqXHR, ajaxSettings, thrownError))
注册一个事件处理函数,这个函数会在 Ajax 请求出错时被调用。这是一个 Ajax 事件。
-
1.0 新增ajaxError(handler(event, jqXHR, ajaxSettings, thrownError))
handler(event, jqXHR, ajaxSettings, thrownError) (Function) 将要被调用的函数。
当 Ajax 请求出错时,jQuery 会触发 ajaxError
事件。任何先前通过 .ajaxError()
方法注册的事件处理函数都会在此刻被执行。
为了实际研究这个方法,我们先构建一个简单的 Ajax load 请求:
<button class="trigger">Trigger</button> <div class="result"></div> <div class="log"></div>
可以把事件处理函数附加到任何元素上:
$("div.log").ajaxError(function() { $(this).text( "Triggered ajaxError handler." ); });
现在,我们可以用任意 jQuery 方法来发送一个 Ajax 请求,比如在 click 中发送一个请求:
$("button.trigger").click(function() { $("div.result").load( "ajax/missing.html" ); });
当用户点击按钮后,由于请求的文件不存在,因此 Ajax 请求失败,于是就会显示日志信息。
注意: 由于 .ajaxError()
是作为一个 jQuery 对象实例的方法来实现的,所以我们在回调函数中可以通过 this
关键字来指向原先所选中的元素。
无论是哪一个 Ajax 请求出错了,所有的 ajaxError
处理函数都会被执行。如果有时必须区分出不同的请求,我们可以使用传递给事件处理函数的参数来识别不同的请求。每次 ajaxError
事件处理函数执行时,都会传递一个事件对象,一个 jqXHR
对象(在 jQuery 1.5 之前, 是
XHR
对象),以及一个在请求创建时用的 settings 参数对象。其中 settings 参数对象就是调用 Ajax 请求时,传递给 $.ajax 方法的 settings 对象(有时候是在 jQuery 内部传递的,比如用 load 方法时,jQuery 内部也会调用 $.ajax 方法,并且构造并传递一个
settings 参数)。通过 settings 对象,我们就可以用来确定这是哪一个请求。如果请求失败了,JavaScript 会抛出一个异常,并将这个异常对象作为第四个参数,传递给事件处理函数。比如说,我们可以限定某个回调函数仅仅处理某个特定的 URL:
$( "div.log" ).ajaxError(function(e, jqxhr, settings, exception) { if ( settings.url == "ajax/missing.html" ) { $(this).text( "Triggered ajaxError handler." ); } });
示例:
在 Ajax 请求失败时显示一条信息。
jQuery 代码:
$("#msg").ajaxError(function(event, request, settings){
$(this).append("<li>Error requesting page " + settings.url + "</li>");
});