JSON和意外的角色

时间:2013-11-26 13:22:07

标签: javascript jquery json

考虑到这个结果,我得到了一个ajax调用:

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

所以我想知道为什么我的对象不断返回“意外的角色”。

3 个答案:

答案 0 :(得分: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

    }
}); 

答案 1 :(得分:0)

似乎从API返回的 data 已经是 array

您正在尝试解析数组,所以错误。

所以改变

var arrayObjects = data;

答案 2 :(得分:0)

通过设置dataType: "json",您告诉jQuery将接收到的数据解析为JSON,因此数据作为Javascript数组传递给success()函数。

请参阅:http://api.jquery.com/jQuery.ajax/