ajax json:如何从ajax收到的json对象中检索数据?

时间:2016-06-14 12:20:03

标签: json ajax django

以下是代码:

$.ajax({
  url: MyURL,
  method: 'GET',
  processData: true, 
  contentType: 'application/json;',
  dataType: "json",
  success: function(data) { 
    alert("Success data= "+JSON.stringify(data));
    var count = Object.keys(data).length;
    alert("count = "+count );
    result=data[0];
    alert("result.CountryName:"+ result.CountryName);
    alert("total " + keys.length + " keys: " + keys);
  error: function(data) { alert("ajax Error");   },
});

第一个警报似乎没问题并给出: 成功数据=" [{\" CountryName \":\"法国\",\"货币\":\" Euro \",\" PriceMax \":500.00,\" PriceStep \":50.00,\" PriceMin \":100.00}] "

从firebug / network / response我看到相同的数据(用反斜杠!!)

第二个警报给出107.显然每个角色都是一个对象? 但是当我检查http://jsonlint.com/上的语法时,json是正确的。

最后警告给出了:undefined。

那有什么不对?

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

您发送的数据是包含单个对象的数组。您需要使用data[0]['CountryName']

答案 1 :(得分:0)

您拥有的响应不是JSON对象,而是String。因此,您需要将其解析为JSON,然后获取数组的第一个位置。

json_data = JSON.parse(data)
result = json_data[0]

然后使用该对象的属性:

result.CountryName

答案 2 :(得分:0)

问题是json字符串中的斜杠。

我读了Why does JSON returned from the django rest framework have forward slashes in the response?并在我的django代码中做了一些修改。

我更改了返回JsonResponse(simplejson.dumps(data),safe = False) 返回JsonResponse(data,safe = False),斜线消失,然后javascript代码工作。

感谢Daniel和Rubico的帮助