Получение JSON из asp.net ничего не возвращает с использованием getJSON - PullRequest
1 голос
/ 14 февраля 2012

Попробую немного поработать над JSON здесь, в моем проекте asp.net mvc.У меня есть следующее представление:

<asp:Content ID="Content3" ContentPlaceHolderID="NavigationPlaceholder" runat="server">
<script type="text/javascript">
    $(document).ready(function () {
        alert('loaded');
        $.getJSON('/Students/LoadYearRoot', null, function (data, textStatus) {
            alert('test');
        });
    });
      </script>
</asp:Content>

и следующий контроллер (Обратите внимание, что я закомментировал мой вызов базы данных и просто пытаюсь использовать строки.получить мое первое предупреждение, показывая «загружен», но затем он останавливается, и я никогда не попадаю в функцию обратного вызова, я проверял, что я нажимаю на контроллер, используя точку останова, поэтому результат кажется правильным.все примеры, которые я нашел в Интернете, в точности такие, что мне не хватает?

1 Ответ

3 голосов
/ 14 февраля 2012

По умолчанию JSON не разрешен для глаголов GET, которые вы используете для своего запроса AJAX ($.getJSON).Чтобы включить его, вы можете передать значение JsonRequestBehavior.AllowGet методу Json в действии вашего контроллера:

JsonResult result = this.Json(strings, JsonRequestBehavior.AllowGet);

И в следующий раз, когда один из ваших запросов AJAX не будет работать вместо прямой публикации вопросав StackOverflow просто откройте свой инструмент отладки javascript в своем любимом браузере (FireBug в FireFox, инструменты разработчика Chrome в Google Chrome, я не знаю, что в IE - на самом деле не используйте IE для разработки веб-приложения - мое определениеIE выглядит следующим образом: приложение для Windows, разработанное Microsoft, которое используется для загрузки веб-браузера при переустановке операционной системы ) и просмотра вкладки Network.Там вы увидите ваш AJAX-запрос и ответ от сервера.Вы также увидите код состояния HTTP, возвращаемый сервером.Просто разверните ответ и прочитайте сообщение об ошибке, отправленное вам сервером.В этом очень конкретном случае он даже скажет вам, как решить проблему.

Еще одна заметка о вашем коде.Абсолютно никогда не указывайте URL-адрес в приложении ASP.NET MVC как этот код:

$.getJSON('/Students/LoadYearRoot', ...

Всегда и абсолютно всегда используйте помощники URL при работе с URL-адресами в приложении ASP.NET MVC, например:

$.getJSON('@Url.Action("LoadYearRoot", "Students")', ...

Причина этого в том, что ваш код больше не зависит от маршрутов, настроенных вами в Global.asax, и в дополнение к этому он будет работать даже при развертывании приложения в виртуальном каталоге в IIS, и в этом случаевам нужно добавить имя приложения.

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