Определение переменной Javascript с использованием данных из цикла Foreach - PullRequest
0 голосов
/ 07 февраля 2012
<? foreach ($waiting_users as $waiting_user): ?>
<? echo $waiting_user->user_id; ?>
<? endforeach; ?>

Мне нужно определить идентификатор пользователя в переменной javascript. Каков наилучший способ сделать что-то подобное?

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

EDIT

foreach возвращает только один идентификатор пользователя. Он используется для отображения пользователя, который подписался на чат. Затем я использую код ниже, который находится в 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 ]

2 голосов
/ 07 февраля 2012

Я бы порекомендовал получать нужные данные через сервис, который вы могли бы вызывать из javascript, используя ajax, но ваша версия тоже работает, хотя и немного запутанно.
Если вы действительно хотите написать php-код, который генерирует код javascript, я рекомендую передать весь объект на сторону клиента. Просто сделайте его 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
Если вы хотите передать на клиентскую сторону только идентификаторы пользователей, вы должны зациклить коллекцию пользователей (в 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 голосов
/ 07 февраля 2012

Соберите идентификаторы пользователя в массиве и затем выведите этот массив как 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...