2010-06-05 87 views
0

我想从我的表单发布数据到加载外部内容的jquery对话框。通过ajax传递数据到对话框Jquery

我该序列化工程(出现在URL)形式的数据,但该对话框不会打开:

 $("#wavajax button").click(function() { 
    $.post({url: 'player/index.php', data: $("#wavajax").serialize(), 
     success: function (data) { 

        $("#recordingdialog").load("player/index.php", [], function(){ 
       $("#recordingdialog").dialog("open"); 

       } 
    }); 
    return false; 
}); 

什么我做错了,我要对正确的方式???

+0

在此之前您是否正在创建对话框?还不确定你为什么要做一个POST,然后GET一个相同的URL? – 2010-06-05 10:07:51

+0

我试图将数据发布到player/index.php,并且该页面在 – user342391 2010-06-05 10:10:44

+0

中的发布数据的对话框中打开,无论“#recordingdialog”是放置在您的标记中的div并包括所有对话框UI依赖关系。 – jAndy 2010-06-05 10:11:23

回答

4

认为这是你追求的:

$("#wavajax button").click(function() { 
    $.post('player/index.php', $("#wavajax").serialize(), function (data) { 
     $("#recordingdialog").html(data).dialog("open"); 
    }); 
    return false; 
}); 

你已经从POST获取HTML内容发回(或至少我认为是这样),所以只使用.html()将该响应放在#recordingdialog中,然后进行对话调用。如果你以前没有创建带有选项的对话框,然后就.dialog()就足够了,.dialog('open')适用于当你与各种选项对话框创建较早,现在想要打开它,像这样:

$("#recordingdialog").dialog({ 
    //other options, width, height, etc... 
    autoOpen: false 
}); 

You can find a full list of these options here

+0

这很好。但是,当我关闭对话框并单击再次打开时,没有任何反应会出现任何想法,为什么o巧妙的昵称 – user342391 2010-06-05 11:01:39

+0

@user不应该是这种情况......是否还有其他与'#recordingdialog'元素混淆的其他内容? – 2010-06-05 11:08:57

+0

是的,我有一个标题包含在播放器/ index.php文件的顶部。删除它,一切都很好。你是男人! – user342391 2010-06-05 11:13:37

0

它可能是一个更好的主意,首先显示对话框并加载内容。

$('#recordingdialog').dialog('destroy'); // just in case 
$('#recordingdialog').dialog({ 
    position: 'center', 
    // some more options 
    open: function(e, ui){ 
     $.post('player/index.php', data: $("#wavajax").serialize(),function (data){ 
       $("#recordingdialog").html(data); 
     }); 
    } 
}); 

在您的点击处理程序中。

UI Dialog Doc

+0

这种方法留下了一个空白的对话框,等待内容加载,然后当它闪烁时,我不相信这是一种应该使用的方法....也检查你的$ .post()调用,它不是有效的:) – 2010-06-05 10:21:21

+0

我想这种方法比按下按钮后不发生任何事情更好。在打开的对话框中插入某种'loading' gif可能是个好主意。 – jAndy 2010-06-05 10:23:40

+0

你当前的答案会抛出一个javascript语法错误,所以它不会更好;) – 2010-06-05 10:25:56

0

好吧我有这个工作:

 $("#recordingdialog").dialog({ 
    //other options, width, height, etc... 
    modal: true, 
     bgiframe: true, 
     autoOpen: false, 
     height: 550, 
     width: 550, 
     draggable: true, 
     resizeable: true, 
     title: "Play Recording",}); 


$("#wavajax button").click(function() { 
    $.post('player/index.php', $("#wavajax").serialize(), function (data) { 
     $("#recordingdialog").html(data).dialog("open"); 
    }); 
    return false; 
}); 

感谢尼克!但有一个问题。当我关闭对话框并单击按钮时再次打开它没有任何反应,为什么不呢?