Как избавиться от этой проблемы публикации формы Ajax? - PullRequest
0 голосов
/ 09 марта 2012

Я отправляю форму в действие контроллера.Я получаю ошибку от контроллера.

Это поведение, которое я хочу: Если ошибка - показать правильное сообщение об ошибке на той же странице без обновления страницы.В случае успеха - снова показать сообщение об успехе на странице без обновления страницы

Я получаю только то, что страница полностью обновляется с другим URL-адресом и показывает это: {"status": "Failed", "msg": "\ u0027Name \ u0027"}

URL-адрес меняется на: ../respond/update - действие, которое я публикую на

В основном я хочу перехватить этот статус «Сбой» и отобразитьсообщение в промежутке.

Но почему оно переносит меня на другую страницу?

Вот представление:

@using (Html.BeginForm("Update", "Respond", FormMethod.Post, new { id = "frmUpdate" }))
{
  //have my form here
  //submit button
}

Here is the js handler that posts the form:
$('#frmUpdate').submit(function () {
            //validation
            $.ajax({
                url: this.action,
                type: this.method,
                data: $(this).serialize(),
                beforeSend: //show loader
                success: function (result) {
                    alert(result.status);                    
                },
                error: function (xhr, status, error) { alert('error'); }
            });
            return false;
        });

Here is controller:
[HttpPost]
public ActionResult Update(ResponseModel model)
{
    return Json(new { status="Failed", msg = "Name" });
}

РЕДАКТИРОВАТЬ: В Firefox требуется другой URL.Но в IE8 я получаю эту ошибку от самого jquery.Интересно ...

Сообщение: объект не поддерживает это свойство или метод Строка: 28 Символ: 12724 Код: 0 URI: /Content/js/external/jquery-1.6.2.min.js?v= 3

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Я думаю, что вы должны остановить поведение отправки по умолчанию, сделав так:

$('#frmUpdate').submit(function (e) {
  e.preventDefault();
  <your code here>
});

В противном случае отправка формы будет вызывать поведение, которого вы хотите избежать. Надеюсь, это поможет.

0 голосов
/ 09 марта 2012
@using (Html.BeginForm("Update", "Respond", FormMethod.Post, new { id = "frmUpdate" }))
{
  //have my form here
  //submit button 
}

Если вы используете кнопку отправки, то она будет публиковать страницу. Вам нужно использовать кнопку типа вместо отправки.

Это будет работать.

@using (Html.BeginForm("Update", "Respond", FormMethod.Post, new { id = "frmUpdate" }))
{
  //have my form here
  //use type button 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...