php-эхо javascript с php-эхо внутри

Я очень новичок в PHP и JavaScript. В настоящее время я использую эхо в PHP для запуска JavaScript на странице. Мне нужно создать новый массив javascript и новую переменную, которые равны существующему массиву и переменной PHP, поэтому я сделал это:

var messages = <?php print_r($messages)?>
var list = <?php echo $message['user_name'].': '.$message['text'].' ('.date('d/m/Y H:i:s', $message['date']).')'.'<hr />'; ?>

Однако есть проблема, вызванная тем, что я использую эхо для эхо-скрипта, содержащего эхо. Как бы я решил это. Я хотел бы повторить это, потому что это всего около 4 строк, так что есть альтернатива.

Заранее спасибо.

Изменить: это весь JavaScript. Это для системы обмена сообщениями. $messages объявляется из другой функции PHP, и основная цель этого кода — «обновлять» эхо каждые несколько секунд, чтобы пользователь мог видеть новые сообщения без необходимости обновлять свою страницу:

    echo '<script type="text/javascript">;';
    echo 'var messages = <?php print_r($messages)?';
    echo 'var list = <?php echo $message['user_name'].': '.$message['text'].' ('.date('d/m/Y H:i:s', $message['date']).')'.'<hr />'; ?>';
    echo 'setInterval(function(){console.log("hello")},3000);';
    echo '</script>';

person user3315726    schedule 19.02.2014    source источник
comment
опять таки? этот вопрос задают много раз. Поиск в Google / Переполнение стека!   -  person Raptor    schedule 19.02.2014
comment
comment
Я сделал, но я не мог найти подобный вопрос   -  person user3315726    schedule 19.02.2014
comment
Из того, что я вижу, это на самом деле не решает проблему двойного эха, а просто объясняет разницу между кодом, выполняемым на сервере, и кодом, выполняемым на клиенте.   -  person user3315726    schedule 19.02.2014
comment
да, это то, что вы не понимаете.   -  person Raptor    schedule 19.02.2014
comment
Я понимаю, что PHP сначала выполняется на сервере, отправляя HTML/JavaScript клиенту, поэтому я повторил javascript, чтобы он мог быть выполнен клиентом!   -  person user3315726    schedule 19.02.2014
comment
когда вы повторяете javascript, коды PHP не будут выполняться. Коды PHP выполняются при загрузке страницы. JavaScript не может контролировать загрузку PHP, если только вы не используете вызовы AJAX.   -  person Raptor    schedule 19.02.2014
comment
Да, так как бы вы порекомендовали настроить массив и переменную javascript с помощью PHP?   -  person user3315726    schedule 19.02.2014
comment
Прочтите руководства по AJAX. Рекомендую использовать jQuery для удобства.   -  person Raptor    schedule 19.02.2014


Ответы (2)


Не получая то, что вы хотите, но если вы хотите использовать php-массив в javascript, сделайте его массивом javascript

<script>
    <?php $test_arr = array('apple','banana','mango');?>
    var js_array = <?php echo json_encode($test_arr);?>;
</script>

вывод

<script>
    var js_array = ["apple","banana","mango"];
</script>
person rajesh kakawat    schedule 19.02.2014

Ваш Javascript будет выполняться на клиенте, а не на сервере. Это означает, что foo не оценивается на стороне сервера, и поэтому его значение не может быть записано в файл на сервере.

Лучше всего думать об этом процессе так, как если бы вы динамически генерировали текстовый файл. Генерируемый вами текст становится исполняемым кодом только после того, как браузер его интерпретирует. На сервере оценивается только то, что вы помещаете между тегами <?php.

Кстати, привычка встраивать случайные фрагменты логики PHP в HTML или Javascript может привести к серьезному запутыванию кода. Говорю из болезненного опыта.

person Jalil    schedule 19.02.2014
comment
Этот ответ является прямой копией этого. - person halfer; 26.04.2014
comment
Всем привет. Согласно моему примечанию к одному из ваших других постов, мы предпочитаем, чтобы скопированная работа была указана, чтобы ОП здесь мог поблагодарить автора — часто через голосование. Однако, на мой взгляд, еще лучше просто добавить ссылку под вопросом. Я считаю, что вам нужно 50 повторений, чтобы сделать это, но если вы были так склонны, вы можете получить это, ответив всего на несколько вопросов. - person halfer; 26.04.2014