Опубликовать с помощью JQuery AJAX для ASP.NET MVC 1.0 - PullRequest
3 голосов
/ 15 сентября 2009

Я делаю пост JQuery AJAX, как это:

  var form = $("#formid");
  form.submit(function()
  {      
    $.ajax(
    {
      type: "POST",
      url: form.attr("action"), // points to NewClient
      data: form.serialize(),
      success: function(msg) { alert('ok ' + msg); },
      error: function(req, status, err) { alert('err=' + err + ' status=' + status); }
    });
    return false;
  });

На стороне ASP.MVC у меня есть что-то вроде этого:

[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult NewClient()
{
  // just a test...
  return null;
}

Какой правильный тип результата для функции NewClient, чтобы jQuery работал правильно? Как и сейчас, он работает в FF и Chrome, но не работает в IE8 (работает в IE7) - т.е. в IE8 я получаю предупреждение об ошибке ( edit : ошибка произошла из-за вызова «отладчик;») в вызове JS). В любом случае, какой рекомендуемый способ:

  • Передача формы в ASP.NET MVC через jQuery (кажется, что $ (). Serialize () работает нормально, это рекомендуемый способ?)
  • Со стороны сервера возвращать либо Успех, либо Отказ, и в случае сбоя какое-либо сообщение я мог бы показать клиенту. Как мне сказать jQuery, что метод / вызов не удался или нет?

Спасибо.

EDIT:

HTML выглядит так:

<form id="formid" action="/client/newclient">
   ... input fields ...
</form>

1 Ответ

4 голосов
/ 15 сентября 2009

form.serialize () - это правильный способ публикации формы в jQuery.

С точки зрения обработки ошибок, у вас есть суть. jQuery будет считать запрос только неудачным, если сервер вернет код ошибки HTTP. Если вы хотите определить «логический сбой», т. Е. Ваше приложение каким-то образом перестало работать, и вы хотите вернуть html / json-ответ, указывающий, что пошло не так (что будет иметь действительный код HTTP), то вам нужно добавить флаг ошибки ответ и проверьте его в обработчике «success».

Мне всегда нравился подход Бена Наделя к нему.

Я также ответил на аналогичный вопрос до с довольно подробным примером кода.

Прежде чем реструктурировать весь ваш код jQuery, я бы посмотрел, что происходит в IE8, с помощью такого инструмента, как Fiddler.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...