2017-01-05 5 views
1

Я изучаю веб-разработку. И я просто хочу сделать простой вызов AJAX GET в ASP.Net MVC Application, и я хочу визуализировать, как он работает. Но я не могу этого сделать. Я новичок, и я мог бы совершить глупые ошибки. Но на данный момент ошибок в моем коде нет.Как сделать вызов AJAX GET в приложении ASP.NET MVC

Ниже то, что у меня есть:

Итак, у меня есть Index.cshtml файл, который уже загружен. Теперь на этой странице я хочу сделать Ajax GET call одному из function, который я написал в HomeController, а имя действия - Test. Я просто хочу попасть в точку останова в этом Test Action Homecontroller и вернуть что-то обратно в Success AJAX Call. В HomeController меня ниже действий

[HttpGet] 
public ActionResult Test() 
{ 
    return View("hello"); 
} 

JQuery

$.ajax({ 
     url: '/Home/Test', 
     type: 'GET', 
     success: function (html) { 
      alert(html); 
     }, 
     error: function (error) { 
      $(that).remove(); 
      DisplayError(error.statusText); 
     } 
    }); 
} 

Путаница: Мне нужно создать cshtml для Test делать. Но я этого действительно не хочу. Я просто хочу, чтобы действие Test возвращало мне данные. И я покажу эти данные в моем уже открытом файле Index.csthml.

Ошибка: Нет ошибки, но я не могу попасть в точку останова в контроллере Test Action. Просьба отметить, что Success AJAX бьет, но я не вижу никаких данных. Но я уверен, что он не попал в точку останова теста.

+0

когда вы звоните код Ajax? Любое событие вызывает этот код? другой мудрый ваш код в порядке. – Anadi

+0

Запросы GET могут быть кэшированы браузером. Если вы вызвали его, как только он снова не дойдет до вашего контроллера. Наблюдайте за сетевым монитором браузера, чтобы убедиться, что запрос выполнен. – Jasen

+0

Здесь был большой ответ на мой вопрос, но теперь этот ответ ушел. :( – Unbreakable

ответ

0

Поскольку вы не хотите возвращать представление, вам может потребоваться вернуть Json(), а не View() Вам необходимо разрешить Get в действии. Как что:

public ActionResult SomeGetAction(int? id) 
    { 
     //Some DB query here 
     var myJsonList = myListQuery; 
     return Json(myJsonList, JsonRequestBehavior.AllowGet); 
    } 

Или в случае только простой ответ строки:

public ActionResult SomeGetAction() 
    { 

     return Json("My String", JsonRequestBehavior.AllowGet); 
    } 

Я бы рекомендовал переименовать html в response. Также измените that на this в разделе «Ответ на ошибку».

$.ajax({ 
    url: '/Home/Test', 
    type: 'GET', 
    success: function (response) { 
     alert(response); 
    }, 
    error: function (error) { 
     $(this).remove(); 
     DisplayError(error.statusText); 
    } 
}); 

Наслаждайтесь.

+0

Я не понимаю вашего ответа. Я просто хочу вернуть одну строку. может быть «привет мир». – Unbreakable

+0

Что это за 'int? id и myListQuery и все'. – Unbreakable

+0

@Unbreakable then return Json («Hello WOrld», JsonRequestBehavior.AllowGet); –

1

Изменить метод действия как этот

[HttpGet] 
public JsonResult Test() 
{ 
    return Json("myContent",JsonRequestBehavior.AllowGet); 
} 

И в методе успеха в «HTML» переменная вы получите обратно «MyContent».

0

Пример:

function RemoveItem(ItemId) { 

       if (ItemId && ItemId > 0) { 
        $.ajax({ 
         cache: false, 
         url: '@Url.Action("RemoveItem", "Items")', 
         type: 'POST', 
         data: { id: ItemId }, 
         success: function (result) { 
          if (result.success == true) { 
           $("#CartItemGridDiv").load('@Url.Content("~/User/Items/CartItemGrid")'); 
           alert('Item Removed successfully.'); 
          } 
          else { 
           alert('Item not removed.'); 
          } 
         }, 
         error: function (result) { 
          alert('Item not removed.'); 
         } 
        }); 
       } 
      } 

     public ActionResult RemoveItem(int id) 
     { 
      if (id > 0) 
      { 
       bool addToChart = false; 

       addToChart = Utilities.UtilityClass.RemoveItem(id); 

       if (addToChart) 
       { 
        return Json(new { success = true }, JsonRequestBehavior.AllowGet); 
       } 
      } 
      return Json(new { success = false }, JsonRequestBehavior.AllowGet); 
     } 
      public ActionResult CartItemGrid() 
     { 
      List<CartItems> oItemList = (List<CartItems>)Session[MvcMAB.StringConst.CartItemSession]; 
      return View(oItemList); 
     } 
Смежные вопросы