使用对话框按钮从嵌入在Jquery对话框中的cakephp表单发送数据

时间:2010-12-09 03:28:06

标签: jquery cakephp jquery-ui-dialog

我有一个问题,对于我的生活,我无法弄明白。我将'add'函数的视图嵌入到jquery模式对话框中,该对话框有2个按钮,发送和取消。我通过ajax将视图加载到div中,当视图完成时,我启动对话框。直到现在一切正常。我的问题是如何在按下jquery对话框提交按钮时发送表单数据?

    $('#addUser').dialog({
                         autoOpen: false,
                         modal: true,
                         title: "Add new user",
                         resizable: false,
                         width: 370,
                         height: 350,
                         buttons: {
                            "Add user": function() {
                                //$("#addUser").html("Updating data...");
                                //$.ajax({
//                                    async:true,
//                                    type: 'post',
//                                    url:'/users/add',
//                                    data: $(this).parents('form:first').serialize(),
//                                    success: function (response){
//                                        $('#addUser').empty().html(response);
//                                    }
//                                })
                               //this part triggers a hidden submit button
                                $('#Submit').trigger('click');
                                $(this).dialog("close");
                            },
                             "Close": function() {
                                 $(this).dialog("close");
                             }
                         }
       });

$('#Submit').trigger('click'); 

Part触发隐藏的提交按钮,该按钮成功地将数据发送到控制器,但是一旦保存数据,它也会将我重定向到另一个页面。我知道这不是实现这一目标的“正确”方式,但我时间紧迫,这是我能找到的唯一解决方案。

至少有人可以帮我解决另一个想法吗?

更新

谢谢Ish Kumar的快速回复。我已经尝试过这种情况,如果您注意到注释的.ajax {}部分,但我没有在控制器中获得任何数据,并且成功部分也从未执行过。触发器(单击)是唯一的方法,就我想出的事情而言:D,将数据传递给控制器​​,但问题在于,不是修改打开对话框ui的主页面上的div,而是重定向我到动作的视图,在我的情况下'索引'..我只是在学习cakephp,我确信有一些我缺少的东西......你知道任何可能指向正确方向的教程,或者你能告诉我控制器中可以达到这个目的的代码吗?我将非常感激。

我想要实现的是:在主页中我有一个所有用户的列表,在列表的底部有一个添加新用户的链接。我希望将新用户的表单打开到jquery对话框中。在对话框中我还有两个按钮,提交和取消。按钮是jquery对话框按钮,如jquery页面上的表单示例。单击提交时,我想在添加操作中将表单中的数据发送到控制器。当添加操作完成后,我想在主页面上更新我的用户列表而不重新加载页面。

提前谢谢你, 尼

1 个答案:

答案 0 :(得分:0)

点击后您必须return false以避免提交两次表单。尝试覆盖表单的提交事件,如下所示

$('#MyForm').submit(function () {
   $.ajax({      // <-- this is your casual ajax request
         url: '/echo/jsonp',
         data : $('#MyForm').serialize(), 
         success : function(data) {
             alert(data);
         }
    });
    return false; // <-- this should stop redirection
});

演示:http://jsfiddle.net/hMTKv/

因此,每次触发提交时,都会启动ajax请求而不重定向。