【发布时间】:2010-10-30 03:03:05
【问题描述】:
我正在寻找 最优雅 的方式来 ajaxify 我的表单(使用 jQuery)。
你是怎么做到的?
【问题讨论】:
-
这个问题似乎是题外话,因为它是一个民意调查。
标签: jquery asp.net-mvc ajax forms
我正在寻找 最优雅 的方式来 ajaxify 我的表单(使用 jQuery)。
你是怎么做到的?
【问题讨论】:
标签: jquery asp.net-mvc ajax forms
这是我的解决方案(我认为是Progressive enhancement 解决方案),只使用没有任何插件的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();
}
}
);
});
}
【讨论】:
Ajaxify 你的表单...这很模糊。
如果您想异步提交表单,可以使用 $.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!" });
}
这至少是我在某些表单中使用的。
P.S.:我在 stackoverflow 文本编辑器中写了这个,所以它没有经过真正的测试。但作为一个大纲,它应该可以工作。
【讨论】:
结帐JQuery plugins storage我相信你会在那里找到你需要的
【讨论】: