MS MVCformsAJAXifying技术

我正在寻找最优雅的方式来ajaxify我的表单(使用jQuery)。
你怎么做到这一点?

这是我的解决方案(我认为它是一个渐进增强解决方案),只使用jQuery而没有任何插件:

var form = $('form#YourFormId'); $(':submit', form).click(function (event) { event.preventDefault(); $.post(form.attr('action'), form.serialize(), function(data, status) { if(status == 'success') { // your code here } } ); }); 

更新:

如果您的POST响应为“带表单的HTML”,请尝试以下操作:

 function ajaxifyForm(form) { $(':submit', form).click(function (event) { event.preventDefault(); $.post(form.attr('action'), form.serialize(), function(data, status) { if(status == 'success') { var newForm = $(data); ajaxifyForm(newForm); form.after(newForm).remove(); } } ); }); } 

Ajax化你的表单…这是非常模糊的。

如果要异步提交表单,可以使用$ .post()发布到单独的控制器操作。

例:

在视图中:

 $.post('<%= Url.Action("DoAjaxCall") %>', $('form').serialize(), function (data) { alert(data.Message); } , "json"); 

在你的控制器中:

 public ActionResult DoAjaxCall(YourModel model) { return Json(new { Message = "Your ajax call is working!" }); } 

这至少是我在某些forms中使用的。

PS:我在stackoverflow文本编辑器中写了这个,所以它没有真正测试过。 但作为一个大纲,它应该工作。

Checkout JQuery插件存储我相信你会发现你需要它