簡體   English   中英

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

[英]Jquery - Ajax: SyntaxError: JSON.parse: unexpected character

我從我的服務器收到以下有效的 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);
        });
    }
});

為什么我收到這個錯誤?

jQuery 足夠聰明,可以按原樣解析響應,即使未指定dataType

在您的情況下,它是指定的,因此它已經被解析, data是解析的 JSON 對象。

因此,您正在做的是解析Object

Doc 說:

數據類型:(默認:智能猜測(xml、json、腳本或 html))

類型:字符串

您期望從服務器返回的數據類型。 如果沒有指定,jQuery 將嘗試根據響應的 MIME 類型推斷它(XML MIME 類型將產生 XML,在 1.4 JSON 將產生一個 JavaScript 對象,在 1.4 腳本中將執行腳本,其他任何內容都將以字符串形式返回)。 可用類型(以及作為第一個參數傳遞給成功回調的結果)是:

僅返回 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);
           });

       }
   });

當您指定 dataType : json 時,結果已在 jQuery 中解析。

此外,完整的函數參數正在返回一個表示結果的對象,而不是結果本身。

在這種情況下,您應該使用var top10Value = JSON.parse(data.responseText) ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM