2015-06-29 4 views
0

Мой запрос ajax возвращается с успехом, но данные, похоже, отсутствуют. Я знаю, что сериализация json работает, потому что, если я делаю запрос в базе данных и сериализую его, результаты запроса будут правильно возвращены. В приведенном ниже случае все, что я возвращаю, это «[]».Контроллер не получает запрос ajax

Edit: Я также сделал другие тесты, как попытаться извлечь одну часть данных из itemsInCart, и это, кажется, совершенно пустой (что оправдывает ответ я получаю).

Модель:

public class ItemInCart 
{ 
    [Key] 
    public int ItemId { get; set; } 
    public virtual Variety variety { get; set; } 

    public int Quantity { get; set; } 
    public virtual InventoryItem inventoryItem { get; set; } 

    public double Price { get; set; } 
    public virtual Variety price { get; set; } 

} 

Контроллер:

[HttpGet] 
    public ActionResult completeSale(List<ItemInCart> itemsInCart) 
    { 
     var json = new JavaScriptSerializer().Serialize(itemsInCart); 
     return Json(json, JsonRequestBehavior.AllowGet); 
    } 

Ajax:

$.ajax({ 
    type: "GET", 
    url: "/" + current_controller + "/completeSale", // the method we are calling 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    data: { "itemsInCart": itemsInCart }, 
    success: function (result) { 
     alert("success " + JSON.stringify(result)); 
    }, 
    error: function (result) { 
     alert("failed " + result); 
    } 

}); 

URL запроса (от инструментов разработчика):

http://localhost:52459/Sale/completeSale?itemsInCart=[{"ItemId":1,"Quantity":"1","Price":3.5}] 
+0

вы пытались 'Alert ("успех" + result.quantity);'? –

+0

Ваш тип контента не совпадает с данными, которые вы отправляете. '{" itemsInCart ": itemsInCart} - это объект, а не json. Я предлагаю удалить параметр contentType. –

+0

'result.quantity' =>' undefined' – abalter

ответ

0

Во-первых, вы не отправляете данные в запрос GET.

Во-вторых, попробуйте это

$.ajax({ 
     type: "GET", 
     url: "http://localhost:59945/wmain/completesale", // the method we are calling 
     contentType: "application/json; charset=utf-8", 

     dataType: "json", 
     success: function (result) { 
      var v = JSON.parse(result); 
      alert(v.name); 
      alert('Yay! It worked!tim' + result); 

      // Or if you are returning something 

     }, 
     error: function (result) { 
      alert('Oh no aa>>>> :(' + result.responseText); 
     } 
    }); 

Укажите полный путь, который открывает в вашем браузере

+0

Да, я должен ПОЧТОВАТЬ, но в POST вы не можете видеть, что вы действительно отправляете, поэтому отлаживать сложнее. Да, это работает. И действительно, у меня хороший успех при отправке отдельных объектов. Но список объектов не работает. – abalter

Смежные вопросы