使用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 });