Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqueryui对话框函数_Jquery_Ajax_Jquery Ui_Dialog - Fatal编程技术网

jqueryui对话框函数

jqueryui对话框函数,jquery,ajax,jquery-ui,dialog,Jquery,Ajax,Jquery Ui,Dialog,我正在通过open事件将外部php页面加载到jQuery UI对话框中,如下所示: $.ajax({ url: "page.php", success: function(data){ $("#loadDiv").dialog({ open: function(){ $(this).html(data); }, autoOpen: false,

我正在通过open事件将外部php页面加载到jQuery UI对话框中,如下所示:

$.ajax({
    url: "page.php",
    success: function(data){ 
        $("#loadDiv").dialog({
            open: function(){
                $(this).html(data);
            },
            autoOpen: false,
            resizable: false,
            minWidth:900,
            minHeight:480,
            modal:true,
            title: "Add Page",
            buttons: {
                "Add": function() {
                    $.post("script.php", $("#addPageForm").serialize() ,
                    function(data){
                        if( data.search("<b>Error</b>") != -1 ||  data.search("<strong>Error</strong>") != -1) {
                            // Error occured 
                        }else{
                            // Success
                        }
                    });
                },
                "Cancel": function(){
                    $(this).dialog("close");
                }
            }
        });
    }
});
$.ajax({
url:“page.php”,
成功:函数(数据){
$(“#loadDiv”)。对话框({
打开:函数(){
$(this).html(数据);
},
自动打开:错误,
可调整大小:false,
最小宽度:900,
身高:480,
莫代尔:是的,
标题:“添加页面”,
按钮:{
“添加”:函数(){
$.post(“script.php”,$(“#addPageForm”).serialize(),
功能(数据){
if(data.search(“Error”)!=-1 | | data.search(“Error”)!=-1){
//发生错误
}否则{
//成功
}
});
},
“取消”:函数(){
$(此).dialog(“关闭”);
}
}
});
}
});
(#loadDiv只是一个隐藏在页面上的空div)

问题是,当您单击“取消”按钮时,它应该关闭对话框,但实际上并没有。我将FireBug用于FF,它告诉我错误“$(this).dialog不是函数…$(this.dialog(“close”);”。当我尝试用$(“#loadDiv”).dialog(“open”)重新打开它时,它也不起作用,我认为这两个问题是相关的

问题是对话框的内容是通过ajax动态加载的,因为如果我去掉ajax部分,它就可以工作。我需要弄清楚如何让它以我现在加载内容的方式工作


如有任何建议,将不胜感激!谢谢

在ajax调用之外声明对话框,将autoOpen设置为false。现在,在成功回调中,您可以将数据附加到空div中,然后显示它。大概是这样的:

$(function() {
    $("#loadDiv").dialog({            
            autoOpen: false,
            resizable: false,
            minWidth:900,
            minHeight:480,
            modal:true,
            title: "Add Page",
            buttons: {
                "Add": function() {
                    $.post("script.php", $("#addPageForm").serialize() ,
                    function(data){
                        if( data.search("<b>Error</b>") != -1 ||  data.search("<strong>Error</strong>") != -1) {
                            // Error occured
                        }else{
                            // Success
                        }
                    });
                },
                "Cancel": function(){
                    $(this).dialog("close");
                }
            }
        });

});

$.ajax({
    url: "page.php",
    success: function(data){ 
        $('#loadDiv').html(data);
        $('#loadDiv').dialog('open');
    }

});
$(函数(){
$(“#loadDiv”)。对话框({
自动打开:错误,
可调整大小:false,
最小宽度:900,
身高:480,
莫代尔:是的,
标题:“添加页面”,
按钮:{
“添加”:函数(){
$.post(“script.php”,$(“#addPageForm”).serialize(),
功能(数据){
if(data.search(“Error”)!=-1 | | data.search(“Error”)!=-1){
//发生错误
}否则{
//成功
}
});
},
“取消”:函数(){
$(此).dialog(“关闭”);
}
}
});
});
$.ajax({
url:“page.php”,
成功:函数(数据){
$('#loadDiv').html(数据);
$('#loadDiv')。对话框('open');
}
});

编辑用JSLint修改并验证了代码。

请检查文档加载完成后是否与对话框加载有关,尝试使用单击事件的实时操作,并检查
$(此)
是否仍然引用该对话框


您可以在代码的早期分配一个变量来保存对
$(this)
的引用,这样您就知道当您引用
$(this)
时,您将引用正确的对象/元素。

算出了,我放在对话框中的页面包含了jQuery源代码,因此,我删除了该行,并且一切正常。

我这样做了,但对话框功能仍然存在问题。我有一个点击事件,触发$(“#loadDiv”)。对话框(“打开”);而且它不工作——firebug只是告诉我它不是一个函数。当我把ajax拿走时,一切都很好,文档中的对话框声明准备好了吗?我加了几行。这应该行得通。只要把它放在文档中就可以了,它仍然会生成相同的错误消息。我的代码在右括号中有一个输入错误。如果你复制并粘贴,可能就是这样。@Victor:不,我只是修复了括号,它仍然不起作用。