Ajax Request возвращает HTTP-ошибку 500, используя MVC и $.ajax-вызов с POST?
Я видел несколько потоков об этом, и я пробовал все ответы (ASP.NET MVC JsonResult возвращает 500)
Мой запрос ajax повторно включает 500 внутренних ошибок. Если я отлаживаю, я даже не дойду до своего действия.
Вот мой вызов ajax:
$.ajax({
url: '@Url.Action("UpdateSortOrder", "FormItems")',
data: { itemToUpdateId: item.attr("id"), newParentItemId: parentItemId, newPreviousItemId: previousItemId },
type: 'POST',
success: function (data) {
console.log(data);
},
error: function (xhr, status, exception) {
console.log("Error: " + exception + ", Status: " + status);
}
});
И мое действие:
[HttpPost]
public ActionResult UpdateSortOrder(Guid itemToUpdateId, Guid newParentItemId, Guid newPreviousItemId)
{
FormItem updatedItem = _formItemService.GetOne(x => x.Id == itemToUpdateId);
return Json(updatedItem, JsonRequestBehavior.DenyGet);
}
Используя хром-консоль, это ответные заголовки ответа:
HTTP/1.1 500 Внутренняя ошибка сервера Cache-Control: private Content-Type: text/html; charset = utf-8 Сервер: Microsoft-IIS/7.5 X-AspNetMvc-версия: 3.0 X-AspNet-версия: 4.0.30319 X-Powered-By: ASP.NET Дата: Вт, 18 дек 2012 21:53:41 GMT Контент-длина: 17041
В журналах сервера нет кодов подстановки. Любая идея, что я делаю неправильно здесь? Я предпочитаю использовать POST вместо GET.
Данные формы отображаются как:
itemToUpdateId: 18ac5399-342e-4a39-9da1-3281a89501df
newParentItemId: нулевой
newPreviousItemId: нулевой
Что правильно.
Я попытался настроить contentType на application/json и традиционный = true, как в этом вопросе: Отправка сообщения ajax в mvc с помощью "application/json; charset = utf-8" возвращает ошибку 500 с сервера веб-разработчиков
Такая же ошибка.
Ответы
Ответ 1
Ну, я смог выяснить, в чем проблема, не было ничего плохого в синтаксисе AJAX или даже в действии. Просто мой возвращенный объект содержал круглую ссылку. Я смог увидеть фактическую ошибку в консоли Chrome, нажав на запрос POST на вкладке "Сеть", а затем просмотрев вкладку предварительного просмотра. Это отобразило фактическое сообщение об ошибке.
Ответ 2
Fiddler - отличный инструмент для поиска http-запросов, что весьма полезно для отладки ответов между клиентской и серверной сторонами. Просто откройте его, когда вы подозреваете проблему в своем браузере, и когда возникает ошибка, открывая скрипт и выберите запрос, затем просмотрите его необработанную информацию.
Ответ 3
Старый пост, альтернативный ответ... На всякий случай кто-то здесь.
Моя проблема была вызвана тем фактом, что действие моего контроллера, которое я вызывал, возвратило результат действия Partial View, а файл ParticView .cshtml
не был опубликован на сервере (не был включен в проект Visual Studio при публикации).
Ответ 4
если вам не нужен updateItem в успехе, тогда не возвращайте его, просто верните простую переменную