Json eval无法解析数据

时间:2012-05-24 16:33:54

标签: php jquery

我有一个php程序,我只测试一些示例数据。我在元素列表后面错误]。我怎么读这个?

$dataDetailsList = array();
array_push($dataDetailsList, array('a' =>'1','b' =>'2','c' =>'3','d' =>'4','e' =>'5'));
echo json_encode(array("DataDetailsList"=>$dataDetailsList));

然后在我的jQuery处理器中,我这样做。

function requestData() {
    $.ajax({
        url: 'live-server-data.php',
        success: function(data) {
            //alert(json);
            var jsonData = eval(" (" + data + ") ");
        },
        cache: false
    });

3 个答案:

答案 0 :(得分:4)

function requestData() {
    $.ajax({
        url: 'live-server-data.php',
        success: function(data) {
            //alert(json);
            var jsonData = data;

        },
        cache: false,
        dataType: 'json' //data type that it will return 
    });
}

答案 1 :(得分:3)

不要使用eval是邪恶的。 而不是这个用途:

JSON.parse(data); // not supported in IE7 and below

我想你需要尝试

dataType: 'json'

即,

$.ajax({
    url: 'live-server-data.php',
    dataType: 'json',
    success: function(data) {
        var jsonData = data;
        console.log(jsonData);
        $.each(jsonData.DataDetailsList, function(key, val) {
             var key = Object.keys(val)[0],
                 value = val[key];
             console.log(key); // output: a, b, c ...
             console.log(value); // output: 1, 2, 3,...
            // alternative
            for(var key in val) {
                console.log(key);
                console.log(val[key]);
            }
        });
    },
    cache: false
})

答案 2 :(得分:2)

您应该将dataType设置为json,jQuery将为您提供帮助..

$.ajax({
    url: 'live-server-data.php',
    dataType: 'json',  //Added dataType json
    success: function(data) {
        //Now data is a javascript object (JSON)
    },
    cache: false
});