Javascript 如何只执行一次ajaxStart和ajaxEnd
我想在网页提交ajax请求时弹出加载gif,但是如何将加载函数绑定到每个ajax请求,而不是绑定到所有ajax请求,因为有些请求不需要弹出加载窗口Javascript 如何只执行一次ajaxStart和ajaxEnd,javascript,jquery,ajax,Javascript,Jquery,Ajax,我想在网页提交ajax请求时弹出加载gif,但是如何将加载函数绑定到每个ajax请求,而不是绑定到所有ajax请求,因为有些请求不需要弹出加载窗口 $("#genericSearchPage_window input[name=submit]").click(function(e){ $("#genericSearchPage_window input[name=submit]").ajaxStart(function(){ console.log("ajax start
$("#genericSearchPage_window input[name=submit]").click(function(e){
$("#genericSearchPage_window input[name=submit]").ajaxStart(function(){
console.log("ajax started~!");
});
$.ajax({
url:"genericSearch.genericSearch.html",
data: $("#genericSearchPage_window #genericSearchForm").serializeJson(),
dataType:"json"
}).done(function(data){
genericSearchProcess(data);
});
});
在这个函数中,如果我们将其更改为$(document.ajaxStart(function()),ajaxStart函数就不起作用{
log(“ajax已启动~!”;
});代码>
它可以工作,但所有ajax请求都将绑定此函数:/
我该如何处理它如果您不想将start方法应用于所有请求,那么您可以在请求时使用发送前
回调
$.ajax({
url:"genericSearch.genericSearch.html",
data: $("#genericSearchPage_window #genericSearchForm").serializeJson(),
beforeSend: function(jqXHR, settings) {
console.log("ajax started~!");
},
dataType:"json"
}).done(function(data){
genericSearchProcess(data);
});
或者,查看global
属性,它阻止调用像ajaxStart这样的全局方法
$.ajax({
url:"genericSearch.genericSearch.html",
data: $("#genericSearchPage_window #genericSearchForm").serializeJson(),
global: false,
dataType:"json"
}).done(function(data){
genericSearchProcess(data);
});
如果将其放入单击处理程序中,为什么不能在没有ajaxStart的情况下调用弹出窗口?否则可以为$.ajax
创建包装器,并将showPopup
作为布尔参数传递。另请查看设置
对象,查看是否可以在ajaxStart
中创建简单条件。请参阅文档examples@charlietfl你的想法很酷,但我想把这个函数写成一个普通函数,就像插件一样,我可以点击按钮弹出,但是我怎么知道ajax请求完成了呢?可以使用ajaxComplete来隐藏弹出窗口…如果它不可见的话,可以吗nothing@charlietfl这是一个好主意,我稍后会尝试,我正在尝试不同的对象。