【发布时间】:2013-10-11 11:53:32
【问题描述】:
我现在使用:
$("#status")
.on("ajaxSend", function() { $(this).show(); } )
.on("ajaxComplete", function() { $(this).hide(); } );
在 ajax 工作时获取状态。这适用于 json,但不适用于 jsonp。有没有办法让它与 jsonp 一起工作?谢谢。
【问题讨论】:
我现在使用:
$("#status")
.on("ajaxSend", function() { $(this).show(); } )
.on("ajaxComplete", function() { $(this).hide(); } );
在 ajax 工作时获取状态。这适用于 json,但不适用于 jsonp。有没有办法让它与 jsonp 一起工作?谢谢。
【问题讨论】:
这似乎是 be a bug in jQuery,或者至少考虑了一个错误。
不幸的是,除了更新您的 jsonp 请求以在 beforeSend 和 complete 上使用相同的东西之外,您目前无能为力:
function ajaxSend() { $("#status").show(); }
function ajaxComplete() { $("#status").hide(); }
$.ajaxSend(ajaxSend);
$.ajax({
dataType: 'jsonp',
beforeSend: ajaxSend,
complete: ajaxComplete
});
【讨论】:
作为 jQuery 和 ajax 的相对新手,我不确定这是否能回答您的问题,但我发现 ajaxSetup() 内的事件处理程序将自动为 jsonp 请求调用,而独立处理程序,如 $(document).ajaxSend(function(event, jqXHR, settings){});将不会。正如 Explosion Pills 所说,您还可以在每次通话的基础上手动覆盖这些。
$.ajaxSetup({
beforeSend: function(jqXHR, settings) {
},
complete: function(jqXHR, textStatus) {
}
});
【讨论】: