我正在使用asp控件,我有一些下拉列表,在选择中返回服务器并执行一些操作(通过asp ajax) 我正在寻找的是在ajax调用开始时通过jquery进行检测 我试过以下电话:
$.ajaxSetup({
beforeSend: function (jqXHR, settings) {
alert("ok");
return false;
}
});
和
also $(document).ajaxStart(function () {
alert("OK");
});
但这都不起作用
答案 0 :(得分:6)
好吧,如果$(document).ajaxStart(function() {});
不适合你,
尝试一下原始的js,
var oldXHR = window.XMLHttpRequest;
function newXHR() {
var realXHR = new oldXHR();
realXHR.addEventListener("readystatechange", function() {
if(realXHR.readyState==1){
alert('server connection established');
}
if(realXHR.readyState==2){
alert('request received');
}
if(realXHR.readyState==3){
alert('processing request');
}
if(realXHR.readyState==4){
alert('request finished and response is ready');
}
}, false);
return realXHR;
}
window.XMLHttpRequest = newXHR;
它应该给你一个ajax请求的所有状态并检查哪一个适合你,然后你可以删除其余的if条件。你可以把它放在$(document).ready(function(){});
答案 1 :(得分:3)
建议不,但您可以使用librato-client和.ajaxStart()
处理程序:
<link href="@Url.Content("~/css/bootstrap.min.css")" rel="stylesheet" />
重要提示从jQuery 1.9开始,jQuery全局Ajax事件的所有处理程序必须附加到
$(document).ajaxStart(function() { console.log('Ajax call started'); $("#loading").show(); }); $(document).ajaxComplete(function() { console.log('Ajax call completed'); $("#loading").hide(); });
。
请注意,如果您的ajax调用包含document
,请求将忽略调用默认全局配置(这也意味着不会调用global: false
和.ajaxStart()
回调。
如果您不想设置全局回调,可以将它们专门设置为您所做的ajax调用:
.ajaxComplete()
答案 2 :(得分:1)
您可以通过这种方式在ajax请求中显示loader / waiting image
。
$('#loading-image').show();
$.ajax({
url: uri,
cache: false,
success: function(html){
$('.info').append(html);
},
complete: function(){
$('#loading-image').hide();
}
});
如果您想绑定global events
和ajaxStart
之类的ajaxStop
。
$("#loading").bind("ajaxStart", function(){
$(this).show();
}).bind("ajaxStop", function(){
$(this).hide();
});