$('#modalBusy')。dialog('close')无法正常使用ajax

时间:2012-02-15 18:40:16

标签: javascript jquery-ui jquery

我正在使用在ajax调用之前打开的JQuery对话框,并且在从ajax调用返回时,执行对话框('close')。下面的语句将忙碌的对话框打开为横幅(没有确定或取消选项):

$('.updateActionsTasks').live('click', function ()
{$('#modalBusy').html('<span>Busy...Please Wait.</span>').dialog({ dialogClass: 'no-close', resizable: false, width: 100, height: 100, modal: true, title: 'Busy' });  
More code goes here ...
//Ajax function call goes here

但是,close方法只能正常工作一次。再次执行单击后,对话框将打开,但永远不会关闭。标记为“COMM”的行会执行,但不会在第二次执行时关闭对话框。

function ActionWorklistItem(serviceUrl, worklistActionItems, actionName, ActiveTab) {
$.ajax({
    type: "GET",
    url: serviceUrl,
    dataType: ($.browser.msie) ? "text" : "xml",
    success: function (data) {
        var xml;
        if (typeof data == "string") {
            xml = new ActiveXObject("Microsoft.XMLDOM");
            xml.async = false;
            xml.loadXML(data);
        } else {
            xml = data;
        }
        var xmlText = $(xml).text();
        xmlObj = $.parseXML(xmlText);
        if ($(xmlObj).find('IsSuccess').text() == 'true') {
            $('#modalBusy').dialog('close'); //COMM: This always executes
            __doPostBack($('.upWorklistCtrlID').val(), ActiveTab);
        } else {
            $('#modalBusy').dialog('close');
            //Create error msg dialog           }
    },
    error: function (xhr, ajaxOptions, thrownError) {
        $('#modalBusy').dialog('close');
        //Create error msg dialog
    }
});

2 个答案:

答案 0 :(得分:1)

不是每次单击都初始化对话框,而是初始化一次,然后在单击链接时打开它:

$('#modalBusy').html('<span>Busy...Please Wait.</span>').dialog({ autoOpen : false, dialogClass: 'no-close', resizable: false, width: 100, height: 100, modal: true, title: 'Busy' });
$('.updateActionsTasks').live('click', function () {  
    $('#modalBusy').dialog('open');

autoOpen : false选项会使对话框在初始化时不会打开。

答案 1 :(得分:0)

以下线似乎已经成功了。

$('#modalBusy').dialog('destroy').remove();