Javascript blockUI vs ajax,异步选项为false
我需要调用一个javascript函数,该函数返回ajax调用的内容 function ajaxQuery(){ var content; $.ajax({ url: "blabla.html, async: false, success: function(data){ content = data } }); return content; } 为了实现这个结果,我在ajax调用中将async选项设置为false function ajaxQuery(){ var content; $.ajax({ url: "blabla.html, async: false, success: function(data){ content = data } }); return content; } 函数ajaxQuery(){ var含量; $.ajax({ 网址:“blabla.html, async:false, 成功:功能(数据){ 内容=数据 } }); 返回内容; } 不幸的是,将async选项设置为false会使blockUI无法正常工作。 在向服务器查询的过程中,浏览器被冻结,没有任何消息 如果我将async option设置为true,blockUI将正常工作,但我的javascript函数返回未定义的值,这可能是因为ajax查询尚未完成 如何在javascript函数中解决这个问题,以获得ajax调用的内容,从而使blockUI正常工作 谢谢 安东尼奥你不能 同步AJAX调用将完全冻结浏览器,应该不惜一切代价避免;这是无法避免的Javascript blockUI vs ajax,异步选项为false,javascript,jquery,Javascript,Jquery,我需要调用一个javascript函数,该函数返回ajax调用的内容 function ajaxQuery(){ var content; $.ajax({ url: "blabla.html, async: false, success: function(data){ content = data } }); return content; } 为了实现这个结果,我在a
相反,您应该使用回调传递值,就像
$.ajax
传递值一样。您的问题是在最后返回内容;相反,在您注册的成功回调中修改dom(或调用这样做的函数)。您可能还想注册一个错误回调,如果服务器返回的不是200,则会执行某些操作。显示一些加载状态消息…直到获得响应。此代码的问题是数据被传递到回调,因此这部分代码
return content;
在这之前的一段时间会被排除在外
success: function(data){
content = data
}
这是未定义返回的原因
那怎么办?
function contentParse(data){
//do things with data received
}
$.ajax({
url: "blabla.html",
success: function(data){
contentParse(data);
}
});
至少我是这样做的。祝你好运。禁用所有其他控制,直到一个操作完成。这个问题每天至少被问五次。