ASP.NET получение объекта JSON обратно с сервера

#jquery #asp.net-mvc #json

#jquery #asp.net-mvc #json

Вопрос:

Я пытаюсь вернуть объект JSON с помощью вызова ajax, но не могу. Я не понимаю, что я здесь делаю не так. Вот мой контроллер:

 public class RandomController : Controller
{
        public ActionResult Index()
        {
            return View();
        }


        /// <summary>
        /// Returns a JSON representation of a Content corresponding to the content ID passed in.
        /// </summary>
        /// <returns></returns>
        public JsonResult GetStuff()
        {
            string x = "testing";
            return Json(x, JsonRequestBehavior.AllowGet);
        }
    }
  

и вот мой запрос ajax:

  $(document).ready(function () {
        $('#randombtn').click(function () {
            $.ajax({
                url: '/Random/GetStuff/',
                success: function (data) {
                    alert(data);
                }
            });
        });
    });
  

и моя кнопка:

 <input id="randombtn" type="button" value="Testing" />
  

Ничего не происходит, когда я нажимаю кнопку.

Комментарии:

1. выполняется вызов ajax, вы видели консоль??

Ответ №1:

вы должны указать URL таким образом, используя @Url.Action() helper для генерации правильного URL из контроллера и имени действия для генерации правильного URL:

 $('#randombtn').click(function () {
            $.ajax({
                url: '@Url.Action("GetStuff","Random")',
                success: function (data) {
                    alert(data);
                }
            });
  

Когда вы вводите /Random/GetStuff, он всегда будет искать этот URL для имени действия. но использование @Url.Action() сгенерирует правильный URL, где бы вам ни понадобился URL, вы можете использовать это, чтобы получить правильный URL.

Подробности см. в документах MSDN

Ответ №2:

 $('#randombtn').click(function () {
    $.getJSON("/Random/GetStuff",function(data){
      alert(data);
    });
});
  

Попробуйте вышеуказанное

Комментарии:

1. по какой-то причине это сработало. Спасибо. Есть идеи, почему .ajax не работает?

2. @SKLAK никогда не кодируйте свой URL подобным образом смотрите мой пост, надеюсь, это поможет, при развертывании приложения в режиме реального времени, что вы будете делать, вам нужно заменить все места localhost на domain, поэтому правильный способ — использовать @Url.Action() helper