Подтвердить что ты не робот

MS MVC формы AJAXifying методы

Я ищу самый элегантный способ ajaxify моих форм (с помощью jQuery).
Как вы это делаете?

4b9b3361

Ответ 1

Вот мое решение (я думаю, что это 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();
                }
            }
        );
    });
}

Ответ 2

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, чтобы он не тестировался. Но как план, он должен работать.