我有一个问题,对于我的生活,我无法弄明白。我将'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页面上的表单示例。单击提交时,我想在添加操作中将表单中的数据发送到控制器。当添加操作完成后,我想在主页面上更新我的用户列表而不重新加载页面。
提前谢谢你, 尼
答案 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
});
因此,每次触发提交时,都会启动ajax请求而不重定向。