2012-02-07 107 views
0
<? foreach ($waiting_users as $waiting_user): ?> 
<? echo $waiting_user->user_id; ?> 
<? endforeach; ?> 

我需要在JavaScript變量中定義用戶標識。做這種事情的最佳方式是什麼?使用來自Foreach循環的數據定義Javascript變量

<script type="text/javascript"> 
    var user_id = "<? echo $waiting_user->user_id; ?>"; <-------------??? 
    var post_id = "<? echo $post_id; ?>"; 
</script> 

編輯

在foreach回報只是一個用戶ID。它用於顯示已註冊聊天的用戶。然後我使用下面的代碼在end.js中從用戶表中刪除用戶。 DELETE FROM table WHERE user_id = ? AND post_id = ?;

<a class="end" href="#" title="End">End</a> 

$(document).ready(function() { 

    $("a.end").click(function() { 

      $.post(base_url + "index.php/home/end", { user_id : user_id, post_id :   $(this).attr('id') }, function(data) 
      { 
        alert(data);      
      }, "json"); 

      }); 


}); 
+0

你想用這個變量來完成什麼?驗證?只是用戶的列表? – 2012-02-07 18:16:19

+0

問題在於最後只有最後一個用戶被設置爲變量。下面來自gion13的答案很好,因爲它將它放入JSON對象中,然後您可以使用JavaScript中的所有用戶。 – thenetimp 2012-02-07 18:17:50

回答

2

我會建議,通過它,你可以使用AJAX腳本調用服務獲取所需的數據,但您的版本也工作,雖然是有點亂。
如果你真的想編寫生成javascript代碼的php代碼,我建議你將整個對象傳遞給客戶端。只需將其設置爲JSON,JavaScript就會將其解釋爲原生JavaScript對象。

<script type="text/javascript"> 
    var users = <?php echo json_encode($waiting_user);?>; 

    // do whatever you want to do with the users 
    // ex : iterate over all users 
    for(var key in users) 
    { 
     var id = users[key].id; 
     // ... 
    } 
</script> 

UPDATE
如果你只是想傳遞給客戶端只有用戶的ID,你應該循環的用戶集合(在PHP),並將其存儲在一個陣列(或對象)。然後使用上面描述的機制:

<?php 
    $user_ids = []; 
    foreach ($waiting_users as $waiting_user) 
     $user_ids[] = $waiting_user->user_id; 
?> 
// .... 
<script type="text/javascript"> 
    var user_ids = <?php echo json_encode($user_ids);?>; 
</script> 
+0

爲什麼要用引號括起JSON對象?另外..結束報價? – paislee 2012-02-07 18:16:45

+0

這不是解決方案。他想獲得一組用戶ID。 – iblue 2012-02-07 18:18:55

+0

好吧,現在是一個很好的答案! – iblue 2012-02-07 18:34:02

0

收集數組中的用戶標識符,然後將該數組輸出爲JS。

<script type="text/javascript"> 
<?php 
$user_ids = array(); 
foreach($waiting_users as $u) { 
    $user_ids[] = $u->user_id; 
} 
?> 
var array_of_user_ids = <?=json_encode($user_ids)?>; 
</script>