2014-04-08 25 views
1

我有这样的困难时间让我的json变量超出了我的json调用我的asp.net mvc控制器类的ajax调用。这里是我的jQuery Ajax调用:使用jquery解析json时未定义变量

$.ajax({ 
     url: '@Url.Action("ReturnTotals", "Cart")', 
     type: 'POST', 
     datatype: 'json', 
     success: function (jsonData) { 
      var totals = $.parseJSON(jsonData); 
      var cost = totals.cost; 
      var qty = totals.qty; 
      $("#totalCost").html(cost); 
      $("#totalQty").html(qty); 
      console.log(cost); 
      console.log(qty); 
      console.log($.parseJSON(jsonData)); 
     } 
    }); 

我的第2个console.logs回来未定义。而第三吐出

[Object { Key="cost", Value=109}, Object { Key="qty", Value=12}] 

我已检查与jsonlint该行,这是很好地形成JSON。对于“var cost = totals.cost;”行我试图改变它“var cost = totals [”cost“];”并没有做任何事情。

这里是我的服务器端功能:

public string ReturnTotals() 
    { 
     CartSummaryModel cart = null; 
     CartModel m = null; 
     cart = (CartSummaryModel)cXML.cXML.DeserializeObject(Session["CARTSUMMARY"].ToString(), typeof(CartSummaryModel)); 
     Dictionary<string, double> totals = new Dictionary<string, double>(); 
     totals.Add("cost", cart.TotalCost); 
     totals.Add("qty", cart.TotalQty); 
     string totalString = cXML.cXML.SerializeJson(totals); 
     return totalString; 
    } 
+0

您正在返回一个数组所以要访问它写'总[0 ] .cost' – Bellash

+0

仍然返回'undefined' – dmikester1

回答

1

有assp.net MVC中默认的Json串行器,你可以使用!其实,我并不想使用你的串行劝阻你,但这里是什么工作我

 public JsonResult ReturnTotals() 
    { 
     CartSummaryModel cart = null; 
     CartModel m = null; 
     // cart = (CartSummaryModel) Session["CARTSUMMARY"] ; 
     Dictionary<string, double> totals = new Dictionary<string, double>(); 
     totals.Add("cost", cart.TotalCost); 
     totals.Add("qty", cart.TotalQty); 
     return Json(totals,"text/json",JsonBehavour.AllowGet); 
    } 

和jQuery

 $(document).ready(function(){ 
     var url='@Url.Action("ReturnTotals", "Cart")'; 
     $.getJSON(url).done(function (jsonData) { 
     var totals =[]||jsonData; 
     var cost = totals.cost; 
     var qty = totals.qty; 
     $("#totalCost").html(cost); 
     $("#totalQty").html(qty); 
     console.log(cost); 
     console.log(qty); 
    });  

     }); 
+0

这工作!使用我的旧方法传递的json一定是错误的。非常感谢! – dmikester1