现在我使用:
$("#status")
.on("ajaxSend", function() { $(this).show(); } )
.on("ajaxComplete", function() { $(this).hide(); } );
在 ajax 工作时获取状态。这适用于 json,但不适用于 jsonp。有没有办法让它与 jsonp 一起工作?谢谢你。
这似乎是 jQuery 中的一个错误,或者至少考虑了一个错误。
beforeSend
不幸的是,除了更新您的 jsonp 请求以在and上使用相同的东西之外,您此时无能为力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) {
}
});