我想在网页提交ajax请求时弹出一个加载gif,但是如何将加载函数绑定到每个ajax请求而不是绑定到所有ajax请求,因为某些请求不需要弹出加载窗口。
$("#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(){
console.log("ajax started~!");
});
,则ajaxStart函数不起作用
它可以工作,但所有ajax请求将绑定此功能:/
我该怎么处理呢
答案 0 :(得分:0)
如果您不希望将start方法应用于所有请求,那么您可以在请求中使用beforeSend
回调吗?
$.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);
});