如何从jquery读取Json_encode php数组?

时间:2013-09-04 09:07:26

标签: php jquery arrays json

我有一个像这样的php数组:

Array
(
    [0] => banana, peach, cherry
    [1] => strawberry, apple, lime
)

我使用json_encode($ myArray)

将它传递给Jquery

在Jquery中,我收到了这样的数组:[“香蕉,桃子,樱桃”,“草莓,苹果,酸橙”]

现在我想提取每个值:“香蕉,桃子,樱桃”& “草莓,苹果,酸橙”

当我尝试使用它时:

$.each(data, function(key, value){
    alert(value);
});

它提醒我每个字符:[“b a n a n ................等而不是每个值。

你知道为什么吗?

编辑:

这是我从php接收数据的方式:

$.post('ajax/fruits.php', function(data) {
    var obj = $.parseJSON(data);
    var chunks = obj['chunks'] // gives me : ["banana, peach, cherry","strawberry, apple, lime"]
    if (obj['error']==0) {
        mix_fruits(chunks); // a function that should extract each value
    }
});

2 个答案:

答案 0 :(得分:3)

你没有显示你如何传递和接收data,但是在这个过程中你犯了一个错误。

从描述中可以明显看出data是一个字符串,而不是一个数组,因为它应该基于PHP变量。由于字符串以构成数据的JSON表示的字符开头,这意味着JSON被包装成字符串而不是解析为JavaScript文字。

假设传递/接收不是通过AJAX请求完成的(在这种情况下jQuery几乎肯定会自动解析数据)我猜你正在这样做:

var data = '<?php echo json_encode($data); ?>';

而你应该这样做:

var data = <?php echo json_encode($data); ?>; // no quotes!

答案 1 :(得分:2)

您需要先解析JSON对象,然后才能使用它,

var jsonObj = jQuery.parseJSON(data);

然后遍历每个项目使用此,

for(var key in jsonObj)
{
    curr = jsonObj[key];
}

如果你想使用非jquery,

Parse JSON in JavaScript?