解析后无法获取json值

时间:2014-07-12 08:49:58

标签: jquery ajax asp.net-mvc json asp.net-mvc-5

这有效(警报显示:value1,value2)

$.ajax({
            type: 'GET',
            //url: '@Url.Action("GetCustomerInfo","CustomerInfo")', 
            url: "../CustomerInfo/GetCustomerInfo",  
            dataType: "JSON",
            contentType: "application/json",
            success: function (customerInfoList) {
              alert(customerInfoList);
              }
        }); 

但不是这个(警报未显示 - chrome调试器显示:发生了意外错误!)

 $.ajax({
            type: 'GET',
            //url: '@Url.Action("GetCustomerInfo","CustomerInfo")', 
            url: "../CustomerInfo/GetCustomerInfo",  
            dataType: "JSON",
            contentType: "application/json",
            success: function (customerInfoList) {
                var obj = JSON.parse(customerInfoList);
                alert(obj);
                     }
        }); 

这用于ASP.NET MVC项目;在控制器后面使用了代码片段

List<string> customerInfoList = new List<string>();

        if (!string.IsNullOrEmpty(customerId))
        {
            customerInfoList = customerInfoRepo.GetCustomerInfo(customerId);
        }

        return Json(customerInfoList, JsonRequestBehavior.AllowGet);

怎么了?

更新: 我需要将该列表中的客户ID和名称设置为cshtml中的表 - 因为我在将列表发送到视图之前执行了以下操作来填充列表。

using (dbContext)
                {

                    var customerInfo = (from c in dbContext.Customers
                                        where c.CustomerID == customerId
                        select c).ToList();

                    foreach (var x in customerInfo)
                    {
                        customerInfoList.Add(x.CustomerID);
                        customerInfoList.Add(x.Name);
                    }

                    return customerInfoList;
                }

2 个答案:

答案 0 :(得分:1)

嗯,好问题,但答案显而易见。 警报obj仅提供类似[object Object]的内容。只需做alert(obj.something)之类的东西,其中某些东西是json中的关键。

例如:

var text = '{"name":"John Johnson","street":"Oslo West 16","phone":"555 1234567"}'

var obj = JSON.parse(text);
alert(obj.name);

警告John Johnson,但如果你alert(obj),它只会返回[object Object] 希望这有帮助

截至目前,尚不清楚错误的来源,但我怀疑它来自JSON脚本。 &#34; json&#34;:将响应评估为JSON并返回JavaScript对象。 JSON数据以严格的方式解析;任何格式错误的JSON都会被拒绝,并抛出一个解析错误。从jQuery 1.9开始,空响应也被拒绝;服务器应该返回null或{}的响应。 (有关正确的JSON格式的更多信息,请参阅json.org。)

请参阅:jQuery.ajax

答案 1 :(得分:1)

在第二个示例中,您使用JSON.parse()来解析已经是JSON格式的数据(由控制器操作方法返回)。 JSON.parse()用于将字符串解析为JSON。要演示,请在浏览器控制台中输入以下内容

var data = '{"name": "John"}'; // data is a string!
data = JSON.parse(data); // data is now JSON (a javascript object)
alert(data.name); // alerts John
data = JSON.parse(data) // throws Uncaught SyntaxError: Unexpected token o