function showwaitmsg() {
$("#wait").fadeIn();
return true;
}
function hidewaitmsg() {
$("#wait").fadeOut();
}
$("a:contains('Test1')").bind("click", function () {
if (showwaitmsg())
test2(); // Function contains XMLHttpRequest
hidewaitmsg();
});
<div id="wait" class="overlay" style="display: none">
Please Wait
<img src="~/loading.gif" />
</div>
在处理XMLHttpRequest时,我试图使用上面的代码显示一条“请等待”消息。等待div在请求处理后出现得太晚了。请您告诉我,一旦单击test1按钮,我应该如何使wait可见?
发布于 2014-02-12 21:56:09
与其在showwaitmsg()
调用之外调用test2()
和hidewaitmsg()
,不如将它们包含在ajax调用中。
$.ajax({
...,
beforeSend: showwaitmsg(),
...,
complete: hidewaitmsg()
});
在beforeSend
函数中返回false将取消请求。从jQuery 1.5开始,不管请求的类型如何,都将调用beforeSend
选项。还值得注意的是,complete
是在执行success
和error
回调之后调用的。
发布于 2014-02-12 21:12:07
$("#id_of_button").on('click', function() {
$("#wait").show();
});
发布于 2014-02-12 21:18:57
最好将此代码移动到AJAX调用本身,如下所示:
$.ajax({
...,
beforeSend: function() {
$('#wait').fadeIn();
},
complete: function() {
$('#wait').fadeOut();
}
});
它将有助于正确地分离逻辑,并支持在代码中进行这样的AJAX调用的更多方法,例如按键盘按钮等。
https://stackoverflow.com/questions/21739680
复制相似问题