我怎么能只执行一次ajaxStart和ajaxEnd

时间:2013-12-06 02:46:36

标签: 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 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请求将绑定此功能:/ 我该怎么处理呢

1 个答案:

答案 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);
});