jqueryui对话框函数
我正在通过open事件将外部php页面加载到jQuery UI对话框中,如下所示: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,
$.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:不,我只是修复了括号,它仍然不起作用。