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插件存储我相信你会发现你需要它