Я не понимаю, почему мой код ниже работает нормально, когда метод установлен на «POST», но не тогда, когда он «GET». Бэкэнд-код отлично работает в обоих случаях, но в интерфейсе я заканчиваю в ошибке: обработчик, когда метод «GET», и только «POST» приводит меня в успех: обработчик.Ajax GET никогда не бывает успешным, но POST (тот же код)
Мой объект возврата из бэкэнд имеет набор AllowGet, и я не отправляю никаких параметров в метод. Почему я получаю 500 внутренних ошибок сервера?
// Front end
$.ajax({
cache: false,
url: '@Url.Action("GetBusinessList")',
method: 'GET',
dataType: 'json',
success: function (data) {
console.log(data);
// do some stuff
},
error: function (xhr, status, text) {
console.log(xhr.status); // 500
console.log(xhr.text); // undefined
console.log(xhr.responseText); // my error page's html
}
});
// The backend code
public JsonResult GetBusinessList()
{
//...
JsonResult returnObj = new JsonResult
{
Data = new
{
MyList = businessList // this is a List<MyType>
},
ContentEncoding = System.Text.Encoding.UTF8,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
return Json(returnObj);
Просто повторить: Код Бэкенд выполняется успешно, когда метод установлен в «POST» и «GET». Код jquery, возможно, виноват, но я не знаю почему.
Имея [HttpGet], действие ничего не делает - на самом деле у меня есть свой собственный атрибут, чтобы проверить HttpContext.Request.IsAjaxRequest. Снятие и замена HttpGet не влияет.
Прошли ли вы через код на сервере, чтобы узнать, что такое фактическая ошибка? –
Почему имя действия отличается? 'GetBusinessList' v' GetBusinessSources'? – christiandev
Отладка в VS (предположим, вы используете эту среду IDE?). Перейдите к debug> exceptions> Исключить проверку исключительных ситуаций в Common Language Rutime «throw». Повторите запрос и проверьте исключение, которое должно быть отправлено и выполнение остановлено. Мне интересно, если это проблема с маршрутизацией, и вы попадаете в исключение «несколько действий, найденных для запроса». –