PHP json_encode到JS对象不可用

时间:2013-03-17 15:07:03

标签: php javascript json object

我有一些看起来像这样的PHP:

$exec[0] = shell_exec("cat /etc/msm.conf | grep JAR_PATH");

$exec[1] = shell_exec("msm server list");
    if(strstr($exec[1],'[ ACTIVE ] "mc-srv" is running. Everything is OK.') !== FALSE){
        $exec[1] = 'mc online';
    }else{
        $exec[1] = 'mc offline';
    }

$exec[2] = shell_exec("sudo ts status");
    if($exec[2] == 'Server is running'){
        $exec[2] = 'ts online';
    }else{
        $exec[2] = 'ts ofline';
    }
echo json_encode($exec,JSON_FORCE_OBJECT);

AJAX请求被发送到页面并返回json。 如果我使用console.log(JSON.parse(data)),我在控制台Object {0: "DEFAULT_JAR_PATH="server.jar"↵", 1: "mc online", 2: "ts ofline"}中看到了这一点,但即使我使用关联数组,也无法访问它的任何方法。

但是如果我创建一个新对象并将其打印到控制台(至少在chrome中)在语法高亮显示方面看起来完全一样,我可以通过obj.method访问它。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

根据对象在控制台中的输出方式,它看起来好像被JSON.parse正确解析并且有效。

在这种情况下,您应该能够访问每个方法:

var obj = JSON.parse(data);
console.log( obj['0'] ); // returns "DEFAULT_JAR_PATH="server.jar""
console.log( obj['1'] ); // returns "mc online"

obj.0在这种情况下不起作用,因为方法名称是数字。