Jquery - Ajax:SyntaxError:JSON.parse:意外字符

时间:2014-07-10 14:42:31

标签: javascript jquery json

我有以下代码和输出,我找不到要解码的json数据的任何错误。任何人都可以帮我找到这个错误

CODE:

     $.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);
               });

           }
       });

输出:

[{"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}]

3 个答案:

答案 0 :(得分:1)

数据仅返回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);
           });

       }
   });

答案 1 :(得分:1)

当你指定dataType:json时,结果已经在jQuery中解析了。

而且,完整 function参数返回一个表示结果的对象而不是结果本身。

那种情况下你应该使用var top10Value = JSON.parse(data.responseText);

答案 2 :(得分:0)

即使dataType未被指定,jQuery也足够聪明地解析响应。

在您的情况下,它已被指定,因此,已经解析,data是已解析的JSON对象。

您正在做的是解析Object

Doc说:

  

dataType :(默认:智能猜测(xml,json,脚本或html))

     

输入:字符串

     

您期望从中获取的数据类型   服务器。如果没有指定,jQuery将尝试根据它推断它   响应的MIME类型(XML MIME类型将产生XML,在1.4中    JSON将产生一个JavaScript对象,在1.4脚本中将执行   脚本,其他任何东西都将作为字符串返回)。可用   types(并将结果作为成功的第一个参数传递   回调)是: