Ошибка Ajax.ActionLink - PullRequest
       9

Ошибка Ajax.ActionLink

0 голосов
/ 07 июля 2011

Сейчас я изучаю реализацию Ajax в MVC, и у меня возникают проблемы с его корректной работой.Вот что у меня есть:

@Ajax.ActionLink("Click here to get a title", "Yo",
    new AjaxOptions { OnSuccess = "alert(\"YES!\")", OnFailure = "alert(\"WHY?!\")" })

А вот два метода контроллера:

    public PartialViewResult GetThatTitle()
    {
        var titular = new TitleDataEntity { };
        titular.TitleName = "Inception!";
        titular.PublishDate = DateTime.Now;
        titular.Id = 2;

        return PartialView("_testView", titular);
    }

    public JsonResult Yo()
    {
        var titular = new TitleDataEntity { };
        titular.TitleName = "Inception!";
        titular.PublishDate = DateTime.Now;
        titular.Id = 2;
        if(Request.IsAjaxRequest())
        {
            return Json(titular);
        }
        return Json(titular);
    }

Когда я вызываю функцию «Yo», браузер выдает мне «ПОЧЕМУ ?!»окно оповещения.Но когда я вызываю GetThatTitle, это дает мне предупреждение об успехе.Почему происходит сбой, когда я пытаюсь вернуть результат Json?

1 Ответ

0 голосов
/ 07 июля 2011

Вы должны разрешить GET-запросы, подобные этому, при возврате JSON, которые по умолчанию отключены:

return Json(titular, JsonRequestBehavior.AllowGet);

Также я настоятельно рекомендую использовать FireBug .Он показывает все запросы AJAX в своей консоли, и вы видите запросы и ответы.Если бы вы использовали его, вы бы увидели следующее:

InvalidOperationException: этот запрос был заблокирован, поскольку конфиденциальная информация может быть раскрыта сторонним веб-сайтам при использовании в запросе GET.Чтобы разрешить запросы GET, установите для JsonRequestBehavior значение AllowGet.]

, что, конечно, поставило бы вас на правильный путь.

...