MS MVC形成AJAXifying技术

时间:2009-05-30 16:40:00

标签: jquery asp.net-mvc ajax forms

我正在寻找最优雅的方式来解析我的表单(使用jQuery)。
你是怎么做到的?

3 个答案:

答案 0 :(得分:12)

这是我的解决方案(我认为它是一个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 with form”,那么试试这个:

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();
                }
            }
        );
    });
}

答案 1 :(得分:6)

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!" });
}

这就是我至少在某些形式中使用的内容。

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

答案 2 :(得分:0)

结帐JQuery plugins storage我相信你会发现你需要