我有一个代码显示正在加载微调器:

 $(document)
   .ajaxStart(function () {
       var indicator = $('#busyIndicator');
       indicator.show();
    })
    .ajaxStop(function () {
       var indicator = $('#busyIndicator');
       indicator.hide();
 })


我在表单成功时触发了一个函数:

 function onSuccess() {
    $('#busyIndicator').show();
 }


这是html(省略了一些代码和属性):

<div id="busyIndicator" style="display: none;">
        <img alt="" src="/Images/Animation/steamtrain.gif">
</div>
<form method="post" id="createForm" data-ajax-success="onSuccess" data-ajax-method="POST"  data-ajax="true">...</form>


onSuccess函数被调用,但是图像不可见。我试图在此行后插入debugger

$('#busyIndicator').show();


在这种情况下,图像可见。我认为ajaxStop之后会触发onSuccess的问题。我只能在onSuccess函数中更改代码。怎么解决呢?

最佳答案

如果要进行ajax调用而不使用全局ajaxStart和ajaxStop。您需要在ajax调用中将此选项指定为选项。只需将global设置为false。

$.ajax({
    url: '/path/to/file',
    type: 'default GET (Other values: POST)',
    dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)',
    data: {param1: 'value1'},
    global: false    // this disables the global ajaxStart and ajaxStop events.
})
.done(function(response) {
    console.log("success");
    //do something on success
})
.fail(function(error) {
    console.log("error");
    //do something on error
})
.always(function() {
    console.log("complete");
    //this will be done always unrelated to succes or error
});


您也可以在需要时使用名称空间绑定和取消绑定ajaxStart和AjaxStop事件。这已经在这里解释了:

How to call .ajaxStart() on specific ajax calls

关于javascript - 全局ajax Stop并形成onSuccess函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20800065/

10-12 01:52