我从我的服务器接收到以下有效的JSON:
[{"name":"Bubble Witch Saga 2","impressions":10749},{"name":"Grinder","impressions":11284},{"name":"Loovoo","impressions":12336},{"name":"Injustice God Among Us","impressions":12786},{"name":"Bookmyshow","impressions":13182},{"name":"Angry Bird","impressions":15404},{"name":"Flipkart","impressions":16856},{"name":"CNN-IBN","impressions":17230},{"name":"Fore Square","impressions":17595},{"name":"NDTV","impressions":19542},{"name":"Whatsapp","impressions":19976}]但是在我的控制台中,我不断收到一个错误,上面写着"JSON.parse:意外字符“。这是我的客户端代码:
$.ajax({
'type': 'get',
'data': {},
'dataType': 'json',
'url': 'dashboard/data/'+type,
'complete': function(data) {
var top10Value = JSON.parse(data);
$.each(top10Value, function(key,value){
console.log(key+" -- "+value);
});
}
});我为什么要犯这个错误?
发布于 2014-07-10 14:49:05
当您指定dataType : json时,结果已经在jQuery中进行了解析。
此外,完整函数参数是返回一个表示结果的对象,而不是结果本身。
这种情况下,您应该使用var top10Value = JSON.parse(data.responseText);
发布于 2014-07-10 14:46:23
jQuery足够聪明,即使没有指定dataType,也可以解析它本身的响应。
在您的示例中,它是指定的,因此,它已经被解析,data是解析的JSON对象。
因此,您要做的是解析一个Object。
医生说:
dataType:(默认:智能猜测(xml、json、script或html)) 类型:String 您期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型推断它( XML类型将生成XML,在1.4 中,JSON将生成JavaScript对象,1.4脚本中将执行脚本,其他任何内容都将作为字符串返回)。可用类型(以及作为成功回调的第一个参数传递的结果)是:
发布于 2014-07-10 14:46:28
数据只返回json格式,
$.ajax({
'type': 'get',
'data': {},
'dataType': 'json',//Return Json Format
'url': 'dashboard/data/',
'complete': function(data) {
//data returned already json format only
//var top10Value = JSON.parse(data);
$.each(top10Value, function(key,value){
console.log(key+" -- "+value);
});
}
});https://stackoverflow.com/questions/24679531
复制相似问题