Mik*_*att 7 javascript ajax jquery exception
除了在每个回调中添加try..catch块之外,有没有办法处理jQuery中从AJAX回调引发的异常?在这种情况下不会调用错误函数.
$.ajax(
{
url: 'myurl.rails',
success: function( data )
{
throw 'Oh no!';
},
error: function ( xhr, textStatus, errorThrown )
{
console.log( 'AJAX call failed', xhr, textStatus, errorThrown );
}
} );
Run Code Online (Sandbox Code Playgroud)
如果你看一下jQuery 1.4.2的非缩小版本,相关的行是5264到5274:
function success() {
// If a local callback was specified, fire it and pass it the data
if ( s.success ) {
s.success.call( callbackContext, data, status, xhr );
}
// Fire the global callback
if ( s.global ) {
trigger( "ajaxSuccess", [xhr, s] );
}
}
Run Code Online (Sandbox Code Playgroud)
jQuery只调用success应用于设置对象的函数(如果它存在),而不关心函数返回或抛出的内容.
你可以做的是这样使用jQuery.ajaxSetup():
jQuery.ajaxSetup({
success: function() {
try {
if ( this.mysuccess ) {
this.mysuccess.apply( this, arguments );
}
}
catch(err) {
// whatever
}
}
});
Run Code Online (Sandbox Code Playgroud)
并使用mysuccess(或任何你喜欢称之为的)而不是success单独的jQuery.ajax电话.
| 归档时间: |
|
| 查看次数: |
4434 次 |
| 最近记录: |