如何在转换为JSON的关联数组上使用eval函数?

时间:2012-02-23 04:51:56

标签: php json

这是我的代码:

    $result = mysql_query("SELECT * FROM Product_Characteristics");

    $charact_array = array();

    while($row = mysql_fetch_array($result)) {
        $charact_array[$row['PC_ID']] = $row['Title'];

    }

    $JSON_char = json_encode($charact_array);

    echo $JSON_char;

回音响应是这样的:

{"1":"product1","2":"product2","3":"product3","4":"product4"}   

一旦返回此数据,我不确定如何使用javascript中的eval函数访问这些值...

通常,使用eval函数我可以得到类似这样的值:

{
    "ptypes": {
        "aptype": [
            {
                "id": "1",
                "title": "product1"
            },
            {
                "id": "2",
                "title": "product2"
            }
        ]
    }
}

使用这样的代码:

var JSONobject = eval('(' + msg + ')'); //msg is the JSON response from above

alert(JSONobject.ptypes.aptype.title[0]) // product1

我基本上需要能够访问JSON中的值(我在上面从PHP关联数组编码)并循环遍历它们。

如果这是不可能的,或者最好将我的JSON数据封装在“ptypes”和“aptype”结构中(这似乎没有必要),我感谢任何建议。

1 个答案:

答案 0 :(得分:3)

如果您收到实际字符串,可以使用

进行解析
var jsonObj = JSON.parse(msg);
alert(jsonObj[1]);

你应该做的是返回正确的内容类型

// at the end of your PHP script
header('Content-type: application/json');
echo $JSON_CHAR;
exit;

然后,您可以使用类似jQuery的getJSON()函数

$.getJSON('some/url.php', function(data) {
    alert(data[1]);
});