0

我有一个看起来像这样的 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 访问它。

我在这里做错了什么?

4

1 回答 1

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在这种情况下不起作用,因为方法名称是数字。

于 2013-03-17T16:18:54.957 回答