以下是代码:
$.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。
那有什么不对?
感谢您的帮助
答案 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的帮助