我有一些看起来像这样的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访问它。
我在这里做错了什么?
答案 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
在这种情况下不起作用,因为方法名称是数字。