簡體   English   中英

PHP json_encode到JS對象不可用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM