[英]PHP json_encode to JS object not usable
我有一些看起來像這樣的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"}
中Object {0: "DEFAULT_JAR_PATH="server.jar"↵", 1: "mc online", 2: "ts ofline"}
即使使用關聯數組,也無法訪問其任何方法。
但是,如果我創建一個新對象並將其打印到控制台,則在語法高亮顯示exect方面,它(在chrome atleast中)看起來完全相同,我可以通過obj.method訪問它。
我在這里做錯了什么?
根據對象在控制台中的輸出方式,看起來好像已被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
在這種情況下不起作用,因為方法名稱是數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.