2012-11-07 58 views
1

我正在寫一個ajax調用一個python後端,它生成一個模態對話框的HTML並彈出後面的對話框。但是,最近我在這裏遇到問題。我的代碼(到目前爲止)如下JS前端。jQueryUI無法打開模式對話框

var deletegroup = function(group){ 
     $.ajax({ 
       url: "ajax.py/get_orphaned_networks", 
       data: {group: group}, 
       success: function(result){ 
         if (result == 0){ 
           alert("Group does not contain networks, no networks will be deleted."); 
         } else { 
           $("#dgf_modal").html(result); 
           $("#dgf_modal").css('visibility', 'visible'); 
           $("#dgf_modal").dialog({ 
             modal: true, 
             closeOnEscape: false, 
             resizable: false, 
             draggable: false, 
             title: "Deleting Group", 
             width: 500, 
             height: 500, 
             buttons: { 
               "Yes" : function(){ 
                 alert("Well, okay then."); 
                 $("#dgf_modal").dialog("close"); 
               }, 
               "Cancel" : function(){ 
                 $("#dgf_modal").dialog("close"); 
               } 
             }, 
             close: function(){ 
               $("#dgf_modal").html(""); 
               $("#dgf_modal").css('visibility', 'hidden'); 
               $(this).dialog("destroy"); 
             } 
           }); 
           $("#dgf_modal").dialog("open"); 
         } 
       }, 
       error: function(){ 
         setlongmessage("An error has occurred. Contact your system administrator."); 
         $("#dgf_status").html("<img src='images/error.png' alt='An error occured.'/>"); 
         setTimeout(function(){$("#dgf_status").html("");}, 3000); 
       } 
     }); 
} 

我在我的應用程序的另一部分有類似的代碼,它工作得很好。然而,這一個,我發現了以下錯誤:

Error: cannot call methods on dialog prior to initialization; attempted to call method 'open'

throw new Error(msg);

jquery.js (line 477)

編輯:我得到同樣的錯誤消息,如果我叫對話框(「開」)或對話框中的DIV(「親密」)。相同的堆棧跟蹤,唯一改變的錯誤是它試圖調用方法'close'而不是'open'。

我正在使用最新版本的jQueryUI和jQuery,因爲我認爲可能更新它們可以解決此問題。沒有骰子。也許我在這個函數的某處搞亂了,但我確實知道ajax調用正在返回它應該返回的正確的HTML。

其他所有檢查 - 我確實有我的div與ID dgf_modal,並且工作正常。不完全確定現在有什麼搞砸了。

+0

NITPICK:一遍又一遍地做'$(「#dgf_modal」)是不好的習慣。它很慢。將其存儲到一個變量中並參考它。 – epascarello

+0

@epascarello:一旦代碼實際工作,我會擔心這一點,但很好。謝謝。 – Skyline969

回答

1

嗯,我已經想通了。畢竟這是我的AJAX調用,返回兩個ID爲「dgf_modal」的div。當我自動生成表格單元時,意外地把它扔到我的for循環中,而不是在實際關閉表格時結束。

總之,我是個白癡。

1

沒有理由打開電話,在創建對話框時使用autoOpen選項。

+0

謝謝你的洞察力。但是,它似乎並沒有解決我所有的問題。我會用更多信息更新帖子。 – Skyline969