如何访问json_encode结果,。?

时间:2012-01-17 10:19:10

标签: php javascript arrays json

我在PHP中使用以下数组:

$user_data = Array
(
    [session_id] => 30a6cf574ebbdb11154ff134f6ccf4ea
    [ip_address] => 127.0.0.1
    [user_agent] => Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
    [last_activity] => 1326795168
    [user_id] => 1
    [username] => praditha
    [logged_in] => 1
    [user_status] => 1
    [email] => xxx@yyy.com
)

然后在javaScript中,我使用:

将该数组编码为json
var userData = '<?php echo json_encode($user_data); ?>';

我使用firebug查看userData值,结果如下:

"{"session_id":"30a6cf574ebbdb11154ff134f6ccf4ea","ip_address":"127.0.0.1","user_agent":"Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1","last_activity":1326795168,"user_id":"1","username":"praditha","logged_in":true,"user_status":"1","email":"xxx@yyy.com"}"

问题是如何访问userData的数组?例如,我想获得username的{​​{1}}。

6 个答案:

答案 0 :(得分:4)

由于您将json_encode输出包装在引号中,$userData是一个字符串而不是一个对象。丢失引号将创建一个Javascript对象:

var userData = <?php echo json_encode($user_data); ?>;
alert(userData.username);

答案 1 :(得分:3)

userData.session_id;
userData.ip_appress;

等等。

答案 2 :(得分:2)

不要引用它。刚

var userData = <?php echo json_encode($user_data); ?>;

然后您可以访问userData.session_id,依此类推。

答案 3 :(得分:1)

您只需要在Javascript中删除字符串周围的引号即可。所以改变:

var userData = '<?php echo json_encode($user_data); ?>';

为:

var userData = <?php echo json_encode($user_data); ?>;

josn_encode()输出Javascript对象文字,因此它是有效的Javascript代码。通过用引号括起来,你只需用这些数据填充一个字符串,但是如果你删除它们就行了。

答案 4 :(得分:1)

将其用作

<?php
$data = array('index1'=>'value1','index2'=>'value2');
?>
<script>
    var json_data = <?php echo json_encode($data);?>;
    alert(json_data['index1']);
    alert(json_data['index2']);
</script>

答案 5 :(得分:0)

<DIV id="test"><?echo json_encode($_POST);?></div>



<div id="ajax">

</div>

<script>
var sample=$("#test").text();
var obj = jQuery.parseJSON(sample);
$("#ajax").load("ceva.php",obj);

</script>

我只是用来从div获取数据并使用$ _POST将其发送到脚本的脚本。使用jQuery

相关问题