使用jquery ajax提交asp.net MVC 3表单
我正在使用ASP.NET MVC 3应用程序,我有一个带有Ok按钮的jquery对话框。 单击确定我想使用jquery AJAX提交表单。
我的ajax调用看起来像这样:
$("#free-trial").dialog({ autoOpen: false, autoResize: true, buttons: { "OK": function () { if (notvalid()) { $(".ui-dialog-titlebar").hide(); $("#dialog-freetrial-insufficientdata").dialog({ dialogClass: 'transparent' }); $("#dialog-freetrial-insufficientdata").dialog("open"); } else { $('#frmCreateTrialAccount').live('submit', function (e) { e.preventDefault(); $.ajax({ cache: false, async: true, type: "POST", url: $(this).attr('action'), data: $(this).serialize(), success: function (data) { alert(data); } }); }); jQuery(this).dialog('close'); } } }, open: function () { $('.ui-dialog-buttonset').find('button:contains("OK")').focus(); $('.ui-dialog-buttonset').find('button:contains("OK")').addClass('customokbutton'); }
});
表单看起来像这样:
@using (Html.BeginForm("CreateTrialAccount", "Home", FormMethod.Post, new { Id = "frmCreateTrialAccount" } )) { }
和控制器动作如下所示:
[HttpPost] public JsonResult CreateTrialAccount(FormCollection form) { return Json("dummy data"); }
但是这种方法没有提交表格。
我在布局页面中包含这些文件:
请建议我解决这个问题。
对不起我的评论,你的问题是你对表格的提交行为具有约束力,你应该已经提交了它。 如果你想绑定表单的提交然后在$("#free-trial").dialog({
之外声明它$("#free-trial").dialog({
。然后你可以在一个单独的函数中使用ajax post方法,这样你就可以在绑定代码中调用它$("#free-trial").dialog({
。
var form = $('#frmCreateTrialAccount'); $.ajax({ cache: false, async: true, type: "POST", url: form.attr('action'), data: form.serialize(), success: function (data) { alert(data); } });
所以只是为了清楚地删除以下代码行:
$('#frmCreateTrialAccount').live('submit', function (e) { e.preventDefault(); // and the ending });