2013-11-26 43 views
0

考慮到這樣的結果,我從一個Ajax調用獲得:JSON和意外的字符

[ 
    { 
     "field1": "2381", 
     "field2": "1233", 
     "field3": "43.79489333333333", 
     "field4": "11.22697833333333" 
    }, 
    { 
     "field1": "2381", 
     "field2": "1774", 
     "field3": "45.70752833333334", 
     "field4": "9.489278333333333" 
    } 
] 

並具有AJAX調用它保留返回「意外字符」錯誤,我有這樣一種叫我用:

jQuery.ajax({ 
    type: "GET", 
    dataType: "json", 
    url: "/myUrl.php", 
    success: function(data) { 
     console.log(data); 
     var arrayObjects = JSON.parse(data); 
    } 
}); 

所以,因爲我在互聯網上閱讀這種Ajax調用的,它說:

[{"value": "test"}] is valid 

所以我不知道爲什麼我的對象不斷返回「意外字符」。

+1

*您的代碼在哪裏返回「意外字符」? 'console.log(data)'的輸出是什麼? – 2013-11-26 13:25:15

+0

這是console.log(data)的輸出: [Object {field1 =「2381」,field2 =「1233」,field3 =「43.79489333333333」,more ...},Object {field1 =「2381」,field2 =「1774」,field3 =「45.70752833333334」,更多...}] – Luigino

+0

它已經是JSON格式,不是字符串 – Moho

回答

0

看來從API返回的data已經是array

你試圖解析一個數組,所以錯誤。

所以更改

var arrayObjects = data; 
+0

但在PHP中,我使用以下代碼行: echo json_encode($ results); – Luigino

+0

jQuery不是PHP – 2013-11-26 13:34:52

3

當使用jQuery.ajax,如果指定dataFormat,它會嘗試根據數據傳遞給回調函數之前指定的格式自動解析響應。

因此,您在回調中收到的不是JSON字符串,它已經是JavaScript對象,不需要任何解析。

jQuery.ajax({ 
    type: "GET", 
    dataType: "json", // <-- this specifies the data format already 
    url: "/myUrl.php", 
    success: function(data) { 
     console.log(data[0]); //logging first record 
     //var arrayObjects = JSON.parse(data); //not needed 

    } 
});