使用Foreach循环中的数据定义Javascript变量

时间:2012-02-07 18:13:04

标签: php codeigniter

<? foreach ($waiting_users as $waiting_user): ?>
<? echo $waiting_user->user_id; ?>
<? endforeach; ?>

我需要在javascript变量中定义用户ID。这样做的最佳方式是什么?

<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");

             });


});

2 个答案:

答案 0 :(得分:2)

我建议您通过一个服务获取所需的数据,您可以使用ajax从javascript调用,但您的版本也可以,但它有点乱。 如果你真的想编写生成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>

<强>更新
如果你只想传递给客户端只有用户的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>

答案 1 :(得分:0)

在数组中收集用户ID,然后将该数组输出为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>