2017-10-21 284 views
0

我之前使用過JSON對象,並且它們的工作完美,但之前製作的JSON對象取自於MySQL條目的結果。現在,我試圖通過PHP中的數組創建自己的JSON對象,並且它在數據庫中正確顯示,但是我無法像以前那樣訪問任何值。JSON,PHP,AS3不知所措:無法追蹤正確的值

$chatArray = array(
array(
    'chatusername' => 'Troy', 
    'chatuserid' => '123', 
    'chatmessage' => 'Hello World' 
), 

array(
    'chatusername' => 'Nick', 
    'chatuserid' => '124', 
    'chatmessage' => 'Testing' 
)); 

$ inputArray = json_encode($ chatArray);

這就是我輸入到我的數據庫,就像我說的那樣很好。然後,我在一個單獨的.PHP呼籲,並得到這個

{"chat":"[{\"chatuserid\": \"123\", \"chatmessage\": \"Hello World\", \"chatusername\": \"Troy\"}, {\"chatuserid\": \"124\", \"chatmessage\": \"Testing\", \"chatusername\": \"Nick\"}]"} 

它拋出的「聊天」出門前這是我的數據庫中列名這我不知道爲什麼。

當我跟蹤它,我只能通過似乎

var messageArray:Object = JSON.parse(event.target.data); 
trace(messageArray.chat); 

追查它的任何時候,我嘗試引用說messageArray.chat.chatusername它返回一個錯誤。

對不起,我知道這可能是一個簡單的解決方案,但我一直在尋找和工作幾個小時。

任何幫助非常感謝!謝謝!

+0

我*想*您需要'messageArray.chat [0] .chatusername'作爲第一條消息,'messageArray.chat [1] .chatusername'作爲第二條消息。或者我錯過了什麼? – rickdenhaan

+0

這就是我的想法,但然後它返回一個錯誤ReferenceError:錯誤#1069:在字符串上找不到屬性0,並且沒有默認值。 –

+0

啊,我明白了。 JSON輸出不正確。 'messageArray.chat'的內容實際上是一個JSON編碼的字符串本身。您需要單獨使用「JSON.parse」,或者修復生成該輸出的PHP文件。 – rickdenhaan

回答

0

the PHP code that generates your JSON output

$stmt = $conn->prepare("SELECT chat FROM markerinfo WHERE markerid='$chatid'"); 
$stmt->execute(); 
$result = $stmt->fetch(PDO::FETCH_ASSOC); 
echo json_encode($result); 

記住的是,您數據庫中的chat列包含JSON字符串。

此代碼是在數據庫中的JSON字符串不解碼,所以$result將是包含一個JSON字符串以及數組:

$result = [ 
    'chat' => '[{"chatusername":"Troy","chatuserid":"123","chatmessage":"Hello World"},{"chatusername":"Nick","chatuserid":"124","chatmessage":"Testing"}]' 
]; 

通過傳遞數組通過json_encode(),你雙 - 編碼您的JSON字符串。

你的目的,你也許可以矇混過關:

echo $result['chat']; 

但是,如果你想被包含在輸出chat列名,你必須將存儲JSON第一解碼:

$result['chat'] = json_decode($result['chat']); 
echo json_encode($result); 
+0

ahhh輝煌'echo $ result ['chat'];'做了詭計。非常感謝! –

0

可能這與PHP端的編碼數組有關,它會用斜槓轉義它,並且這會導致JS端的JSON解析混淆。嘗試將JSON_UNESCAPED_SLASHES選項添加到您的json_encode功能是這樣的:

$inputArray = json_encode($chatArray, JSON_UNESCAPED_SLASHES); 

檢查更多細節json_encode函數文檔: http://php.net/manual/en/function.json-encode.php

+0

我試過,以及沒有運氣 –

+0

@TroyMyers你嘗試打印'$ inputArray'的結果?你應該檢查反斜線從哪裏出來。如果不是'json_encode',那麼它可能是你的mysql查詢轉義內容本身。您能否與我們分享插入代碼? –

+0

感謝您的幫助! rickdenhaan解決了它 –