Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript blockUI vs ajax,异步选项为false_Javascript_Jquery - Fatal编程技术网

Javascript blockUI vs ajax,异步选项为false

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

我需要调用一个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调用将完全冻结浏览器,应该不惜一切代价避免;这是无法避免的


相反,您应该使用回调传递值,就像
$.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);
    }
});

至少我是这样做的。祝你好运。

禁用所有其他控制,直到一个操作完成。

这个问题每天至少被问五次。