我有一个代码显示正在加载微调器:
$(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/