2012-01-17 59 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>