За последние 24 часа нас посетили 39283 программиста и 1722 робота. Сейчас ищут 632 программиста ...

Как передать переменные из php в js

Тема в разделе "PHP для новичков", создана пользователем minux, 3 апр 2013.

  1. minux

    minux Активный пользователь

    С нами с:
    14 май 2012
    Сообщения:
    89
    Симпатии:
    1
    Файл index.php берет контент и делает с ним нужные манипуляции.
    Затем, в него цепляются файлы шаблона: header.php, sidebar.php, footer.php.
    В файлах шаблона происходит окончательный вывод контента.

    В начале header.php (и начале итогового HTML-выхлопа) подключается библиотека jQuery
    <script type="text/javascript" src="jquery-1.9.1.min.js"></script>
    И внешний JS-файл
    <script src="file.js"></script>

    В файле file.js выполняется php-код (разрешено в .htaccess).

    ====
    Не хочется лишний раз проводить php-вычисления внутри file.js, а хочется брать готовые результаты из index.php. Но как это сделать?

    Как же их подцепить? Не инклудить же в JS-файл ради пары переменных все ядро движка?
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. <?php
    2.     $variable='text variable';
    3. ?>
    4. <script type="text/javascript">
    5.     var variable='<?=$variable?>';
    6. </script>
     
  3. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Если речь идёт о том как передать переменные из php в js, то нужно перенести php код из file.js, который вычисляет значения, подставляемые в file.js, в index.php. Присвоить переменным нужные значения, а в file.js выводить эти переменные.

    К примеру, файлы до изменений:
    index.php
    Код (Text):
    1.  
    2. ...
    3. ...
    file.js
    Код (Text):
    1. item_id = document.getElementById('item_<?php echo mysql_result(mysql_query('SELECT MAX(`id`) FROM `items`'), 0, 0); ?>');

    Файлы после изменений:
    index.php
    Код (Text):
    1.  
    2. ...
    3. $maxItemID = mysql_result(mysql_query('SELECT MAX(`id`) FROM `items`'), 0, 0);
    4. ...
    file.js
    Код (Text):
    1. item_id = document.getElementById('item_<?php echo $maxItemID; ?>');
     
  4. minux

    minux Активный пользователь

    С нами с:
    14 май 2012
    Сообщения:
    89
    Симпатии:
    1
    В файле index.php произошло такое вычисление:
    Код (Text):
    1. <?php $domain=$_SERVER['HTTP_HOST']; ?>
    В файле file.js нужно использовать уже полученное вычисление:
    Код (Text):
    1. <?php echo $domain; ?>
    - - - -
    Как сделать так, чтобы file.js получил переменную $domain?
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    переменные можно задать гденить так
    echo "<script>var domain='$domain';</script>";
    а скрипт file.js подключить после этого. и использовать эту переменную в нём спокойно.
     
  6. minux

    minux Активный пользователь

    С нами с:
    14 май 2012
    Сообщения:
    89
    Симпатии:
    1
    Работает...
    Вот только на html-выхлопе получается бесполезная портянка из назначений, которая показывает названия переменных всем заглянувшим в исходный код страницы. За такой исходник стыдно становится :)
    Можно как-нибудь иначе реализовать?
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Забей. =)
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.816
    Симпатии:
    1.333
    Адрес:
    Лень
    кстати по такой же тематике у меня вопрос ) как сделать js чтоб через некоторое время обновлялась циферка (сколько на сайте) .
    ведь вконтакте реализованно но выдрать не получается ))
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    setInterval
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.816
    Симпатии:
    1.333
    Адрес:
    Лень
    перечитай еще раз)
     
  11. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Ну дак, сделайте отдельный модульный файл которые будет на сервере обрабатываться событиями POST, SESSION, GET, то есть импортироваться будут только при событии при этом обязательно сделайте защиту файла, чтобы не переходили на него с браузера адреса вида:
    http://yoursite.ru/file.php?get=name

    Конечно же нельзя без обработки на сервере отдавать js параметры конфигурации и не безопасные данные, такие как пароли, базы и т.д.
    Ибо javascript он отобразится в браузере, что отдал php сервер.

    Добавлено спустя 11 минут 54 секунды:
    setInterval
    $_SESSION['setinterval']

    У vk уж поверьте много чего на сервере подключено для этой соц сети, не думайте, что вы такие вот мего программисты, не подумав, не прочитав про это, считаете, что это сделать будет просто.

    Да! Те, кто знают им просто)
    Можно попробовать к примеру серверный тип javascript и настроить у себя на web'e.

    Чтобы знать, что кто-то есть на сайте, когда открыли страницу, или перешли на вкладку другую (при этом онлайн будет меньше, но будет обновляться постоянно, есть или нет, он перешел на другую вкладку событие прекратится, что он на сайте его не будет "-1", зашел будет "+1")

    Кароче скажу, так нужен язык которые будет более шире.
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дык а в чем вопрос-то?
     
  13. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.816
    Симпатии:
    1.333
    Адрес:
    Лень
    вобщем... лан сам разберусь :)