Код статуса HTTP 500 от тривиального вызова $ .getJSON - почему? - PullRequest
0 голосов
/ 18 октября 2010

Я лишил свой getJSON призыв к простейшему возможному примеру, пытаясь выяснить, почему это не работает, но у меня нет идей.В настоящее время у меня есть:

public JsonResult MyAction()
{
    return Json(new { status = "OK" });
}

$.getJSON('MyController/MyAction', function(result) { alert('worked'); });

Действие вызывается, но предупреждение не срабатывает, и я не вижу его в инструментах разработчика Chrome.Что может быть причиной этого?Как я могу это отладить?

Ответы [ 3 ]

8 голосов
/ 18 октября 2010

По умолчанию MVC 2.0 блокирует GET-запросы к действиям, которые возвращают JsonResult.

Используйте JsonRequestBehavior.AllowGet, чтобы вызвать проблему, или используйте POST.

public JsonResult MyAction()
{
    return Json(new { status = "OK" }, JsonRequestBehavior.AllowGet);
}

Или используйте сообщение:

$.post('MyController/MyAction', function(result) {
    alert('worked');
});
0 голосов
/ 18 октября 2010

Я думаю, что MyController / MyAction относительно того, кем вы сейчас являетесь.попробуйте 'MyController / MyAction'.

РЕДАКТИРОВАТЬ: также попробуйте вызвать MyController / MyAction с любого URL, который вы в настоящее время, и убедитесь, что он возвращает желаемый результат

РЕДАКТИРОВАТЬ: На самом деле это не проблема.Как Майкл указал, это вернет ошибку 404.

0 голосов
/ 18 октября 2010

Pls, используйте firebug (или fiddler) на вкладке Network, выберите XHR, чтобы увидеть, что вы отправляете и получаете.

Как говорит Майкл Шимминс, MVC 2 блокирует получение запросов по умолчанию из-за Json Hijacking,Вот интересная статья:

http://www.ifunky.net/blog/post/AspNet-MVC-2-JsonRequestBehaviorAllowGet.aspx

Они говорят здесь об этом сообщении: «Этот запрос был заблокирован, поскольку конфиденциальная информация может быть раскрыта сторонним веб-сайтам, когда она используется взапрос GET. "

...