По умолчанию 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, и в этом случаевам нужно добавить имя приложения.