从json字符串中提取数据会返回错误

时间:2014-12-27 20:28:24

标签: php jquery arrays json

我在php文件中有这段代码

[
{
    "_id": "549f065925e1928098c74275",
    "index": 0,
    "guid": "c21b3720-430e-4be3-9309-e8afbabc0020",
    "email": "browningriley@zilodyne.com",
    "phone": "+1 (804) 417-2615",
    "address": "657 Temple Court, Katonah, Mississippi, 7139",
    "about": "Ut laborum ut nostrud dolore ut aute irure aliquip duis. Amet proident fugiat cupidatat nulla ullamco adipisicing ea excepteur. Proident in ullamco aute reprehenderit ea. Consequat non cupidatat id sit nostrud non. Velit amet exercitation incididunt aliqua deserunt cupidatat et ex.\r\n",
    "registered": "2014-09-05T01:48:12 -03:00",
    "latitude": -44.882099,
    "longitude": 24.574332,
    "tags": [
        "officia",
        "consectetur",
        "incididunt",
        "eu",
        "magna",
        "esse",
        "elit"
    ],
    "friends": [
        {
            "id": 0,
            "name": "Billie Jarvis"
        },
        {
            "id": 1,
            "name": "Laurie Espinoza"
        },
        {
            "id": 2,
            "name": "Kate Stuart"
        }
    ],
    "greeting": "Hello, Browning Riley! You have 6 unread messages.",
    "favoriteFruit": "banana"
},
{
    "_id": "549f065925aa17df2fd6ebea",
    "index": 1,
    "guid": "9cf247e8-fe6b-4c42-a4a3-24ef7b907ad4",
    "email": "bonitasharp@medalert.com",
    "phone": "+1 (946) 506-2141",
    "address": "414 Willoughby Avenue, Gila, California, 4696",
    "about": "Aliqua aute tempor veniam sit esse velit anim. Proident amet aliqua ad non labore eu voluptate labore in amet exercitation irure. Qui laborum ea aliqua consectetur minim aliqua amet minim laborum sint fugiat ullamco nulla elit.\r\n",
    "registered": "2014-02-11T20:29:39 -02:00",
    "latitude": -19.03677,
    "longitude": 138.137275,
    "tags": [
        "eu",
        "non",
        "et",
        "nostrud",
        "enim",
        "proident",
        "sint"
    ],
    "friends": [
        {
            "id": 0,
            "name": "Gamble Porter"
        },
        {
            "id": 1,
            "name": "Jami Bell"
        },
        {
            "id": 2,
            "name": "Mullen Alexander"
        }
    ],
    "greeting": "Hello, Bonita Sharp! You have 5 unread messages.",
    "favoriteFruit": "strawberry"
}
]

现在尝试从此字符串中提取数据,如下所示

 $("#get").on('click',function(){

            $.get('data.php',function(data){
                console.log(data);
                var json_array = data;
                var new_array = [];
                $.each(json_array,function(i,o) {
                 new_array.push(o._id);
                });

                console.log(new_array);

        });
    });

但是这是“操作数a”中的“TypeError:invalid”结果,正如您在此处看到的in this online example。 php文件是data.php,代码在script.js文件中

2 个答案:

答案 0 :(得分:3)

您需要做的就是将dataType设置为'json'或使用$.getJSON()自动设置数据类型。

这将告诉$.ajax期待什么并相应地解析它

     $.get('data.php',function(data){

                var myarray = data;
                console.log(myarray);
                var new_array = [];
                $.each(myarray,function(i,o) {
                 new_array.push(o._id);
                });

                console.log(new_array);


            $("#result").text(new_array);
        },'json');/* last argument is "dataType" */

该文件的内容标题未作为application/json

发送

DEMO

答案 1 :(得分:2)

您需要解析您的php响应:
data = JSON.parse(data)
 见plunker(第7行已更新)

原因是您在响应中获取了一个字符串,然后您需要将其解析为JSON,您可以通过上面的示例来实现。