2012-11-07 136 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