2012-01-17 371 views
0

我在PHP以下数组:如何访问json_encode结果。

$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] => [email protected] 
) 

,然后在JavaScript中,我编码阵列使用到JSON:

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

和我使用萤火看到的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":"[email protected]"}" 

和问题是我如何访问数组userData
例如,我想获得userDatausername

回答

4

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

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

等。

1

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

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

到:

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

josn_encode()输出一个JavaScript对象字面,所以它是有效的JavaScript代码。通过用引号括起来,你只需用这些数据填充一个字符串,但是如果你删除它们,它就会起作用。

2

不要引用它。只需

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

那么你可以访问userData.session_id等等。

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

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>