2012-02-15 24 views
0

私はAjax呼び出しの前に開かれたJQueryダイアログと、実行される。文の下に(オプションをキャンセルし、[OK]または全くないと)バナーとして多忙なダイアログボックスが開きます。

$('.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'の行は実行されますが、2回目の実行時にはダイアログが閉じません。代わりに、ダイアログボックスを初期化する

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

'success'コールバック関数の最後の括弧は、' //エラーmsgダイアログを作成します.'です。これがコピー/ペーストエラーでない限り、 '}'文字を次の行に移動します。 – Jasper

+0

@ジャスパーいいキャッチ。 –

+0

コピー貼り付けエラーでした。 – Vashu

答えて

0

次のような行がトリックを行ったようです。

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

これは無駄で好ましくないことです。ジャスパーの正解を見てください。正しい方法は、ダイアログを一度作成し、必要に応じて開いて閉じることです。毎回別のダイアログを作成して破壊するプロセスを踏まないでください。 – Lukos

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オプションは、それを行います初期化されました。

+0

外部(つまり、document.ready)のダイアログを初期化すると、ダイアログが開かない場合があります – Vashu

関連する問題