首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX调用块显示对话框

AJAX调用块显示对话框
EN

Stack Overflow用户
提问于 2014-09-26 12:31:41
回答 1查看 38关注 0票数 0

我对某些服务进行了同步 ajax调用。

我想首先显示一个对话框(在我的例子中,它是一个extjs窗口.但这不是重点。同样的问题发生在一个简单的警报(.. )上)。

然后,在显示对话框之后,我想立即调用ajax调用,该调用大约需要30秒才能完成。但是,只有在ajax调用运行完成(即30秒内)之后,对话框才会显示。我甚至试图把它放在一个超时,但这并没有改变任何事情。

代码语言:javascript
复制
Util.logInfo('1. before popup')

setTimeout(function(){alert("Hello")},1000); //some kind of GUI action

Util.logInfo('2. after popup')

var self = this;

var call = {}

call.url = url;
call.xmlHttpReq = $.ajax({
    url: 'somewebserviceURLthattakesaloooongtime',
    dataType: 'json',
    async: false,
    type: 'GET'
}).always(function (processedDataOrXHRWrapper, textStatus, xhrWrapperOrErrorThrown) {
    self.data = processedDataOrXHRWrapper;
});

Util.logInfo('3. after ajax')

这是jQuery ajax功能的一个特殊问题,还是我忽略了ajax如何工作的基本问题?

从Java背景来看,它几乎就像是在进行某种event-dispatch-thread活动。

EN

回答 1

Stack Overflow用户

发布于 2014-09-26 12:35:42

在ajax完成之前,设置async: false将防止进一步的脚本运行(或完全锁定网站)。

在这里可以看到更多在jQuery.ajax()中,异步:false是做什么的?

从文件中

..。默认情况下,所有请求都是异步发送的(即默认设置为true )。如果需要同步请求,请将此选项设置为false。跨域请求和dataType:"jsonp“请求不支持同步操作。请注意,同步请求可能暂时锁定浏览器,在请求处于活动状态时禁用任何操作。..。

只要去掉这一行就能解决你的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26059642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档