2017-10-21 283 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解决了它 –