JQuery加载和绑定函数到AjaxStart和AjaxComplete

时间:2013-10-16 06:54:43

标签: jquery ajax

在学习JQuery的过程中,我遇到了了解AJAX的必要性。使用python的SimpleHTTPServer我正在本地进行实验。我希望在启动AJAX请求时以及完成时都有登录控制台。更准确地说,我有一个按钮,它有一个onclick动作:

function ddd_ajax(){
    $("#ajax_content").load("ajax_load.html")
}

...以及表示启动AJAX请求时加载的div:

$("#indic_loading").bind('ajaxSend', function(){
    $(this).show();
    console.log("Ajax START!");
    alert("Ajax START!");
}).bind('ajaxComplete', function(){
    $(this).hide();
    console.log("Ajax Complete!");
    alert("Ajax Complete!");
})

不幸的是,没有日志和警报。也许load()不会产生任何AJAX O_o? 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

来自docs

  

从jQuery 1.8开始,只应附加.ajaxStart()方法   文档。

示例:

$(document).on('ajaxSend', function(){
    $("#indic_loading").show();
    console.log("Ajax START!");
    alert("Ajax START!");
}).on('ajaxComplete', function(){
    $("#indic_loading").hide();
    console.log("Ajax Complete!");
    alert("Ajax Complete!");
});

这样做的原因是ajaxStartajaxComplete是页面上发生的所有AJAX的通用事件,它们没有绑定到任何特定元素,因为我可以编写如下内容:

// No elements specified
$.ajax("mypage.html", {
    data: { param: 1 }
});

您可以只注册.load事件的回调,而不是绑定到全局事件:

function ddd_ajax(){
    console.log("AJAX Started");
    $("#ajax_content").load("ajax_load.html", function() {
        console.log("AJAX Complete");
    })
}