【发布时间】:2013-04-09 09:49:42
【问题描述】:
我有一个简单的 AJAX 调用,它在 beforeSend 和 complete 上执行一个函数。他们执行得很好,但beforeSend“似乎”直到成功之后才执行。
beforeSend 上有“请稍候”通知。如果我在beforeSend 中的函数之后放置一个中断,那么它将显示该通知,然后成功。如果没有断点,它会在等待响应时坐在那里思考,然后我的请等待通知将在成功命中后出现几分之一秒。
所需的功能是在发送请求后立即显示通知,以便在等待响应时显示。
$.ajax({
type : 'POST',
url : url,
async : false,
data : postData,
beforeSend : function (){
$.blockUI({
fadeIn : 0,
fadeOut : 0,
showOverlay : false
});
},
success : function (returnData) {
//stuff
},
error : function (xhr, textStatus, errorThrown) {
//other stuff
},
complete : function (){
$.unblockUI();
}
});
【问题讨论】:
-
旁注:
async=false的任何原因? -
更新页面常用UI。我不希望用户在执行时能够使用这些操作。
-
beforeSend与async:false结合使用没有任何意义。如果你想保留async:false,你可以在ajax(...)之前添加blockUI调用,因为无论如何代码都会同步执行。 -
我删除了 beforeSend 并将 blockUI 放在请求之前,但是功能没有改变。
-
“功能没有改变”是什么意思?你是说
blockUI调用在success处理程序之后仍在执行吗?
标签: javascript jquery jquery-blockui