jqueryui对话框在ajax调用完成之前不会打开(仅限IE)

jqueryui对话框在ajax调用完成之前不会打开(仅限IE),ajax,internet-explorer,jquery-ui,jquery,Ajax,Internet Explorer,Jquery Ui,Jquery,我有一个web应用程序,点击一个按钮就可以在服务器上完成一系列工作。这项工作是由一个ajax调用启动的,在调用之前,我会显示一个包含动画gif的jQueryUI对话框,让用户知道正在发生的事情。工作完成后,ajax调用返回,对话框关闭。我遇到的问题是,在IE7/8中,对话框从未打开。如果我从回调中删除关闭对话框的代码,那么该对话框将在调用完成后显示,这并没有多大帮助 以下是我的对话框的定义: $("#dgImporting").dialog({ autoOpen: false,

我有一个web应用程序,点击一个按钮就可以在服务器上完成一系列工作。这项工作是由一个ajax调用启动的,在调用之前,我会显示一个包含动画gif的jQueryUI对话框,让用户知道正在发生的事情。工作完成后,ajax调用返回,对话框关闭。我遇到的问题是,在IE7/8中,对话框从未打开。如果我从回调中删除关闭对话框的代码,那么该对话框将在调用完成后显示,这并没有多大帮助

以下是我的对话框的定义:

$("#dgImporting").dialog({
    autoOpen: false,
    width: 250,
    height: 125,
    modal: true,
    resizable: false,
    position: 'center',
    closeOnEscape: false,
    open: function (event, ui) { $(".ui-dialog-titlebar-close").hide(); }
});
下面是我用来执行ajax调用的方法:

function executeImport(importData) {
importData.carriers = JSON.stringify(selectedCarriers);
$("#dgImporting").dialog("open");
$.ajax({
    type: "POST",
    traditional: true,
    url: "import/execute",
    async: false,
    data: JSON.stringify(importData),
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        $("#dgImporting").dialog("close");
    }
});
ajax调用可能需要一分钟才能返回,但在这种配置下,我从未看到对话框。如果我删除(“#dgImporting”)。对话框(“close”);在回调中,我将看到对话框,但直到ajax调用完成之后,即使在进行ajax调用之前调用dialog(“open”)


在Firefox和Chrome中,这一点与预期一样有效,但我真的需要让它在IE中发挥作用。任何JavaScript大师都知道我能做什么吗?

看起来可能是
异步:false
设置。从:

异步布尔

默认值:true

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


尝试取出并再次测试。

解决此问题的另一种方法,仍然使用同步ajax调用,是将“dialog.open”部分放入mousedown事件中,而不是单击


这样,当你将IE(8)放入回调时,你仍然可以做一些IE(8)不喜欢的事情,比如下载文件。

啊,当然。我从另一个应用程序中复制了ajax代码,其中异步错误是有意义的。我移除了它,现在一切都很好,谢谢!我错误地加上了这面旗,使自己陷入了同样的境地。但我没有意识到这种效果,因为我一直在Firefox上测试。谢谢你的回答。同上-我有完全相同的情况,这就是答案。最后。我为此奋斗了这么久。