2017-02-17 5 views
0

, чтобы быть ясным, я не прошу как создать JS-переменную или функцию из PHP, скорее я спрашиваю о правильном пути или лучшей практике для этого.Как правильно создать переменную JavaScript и вызвать функцию из PHP

У меня есть некоторые переменные PHP, которые мне нужно использовать в JavaScript для внесения некоторых изменений позже, мне также нужно запустить JS-функцию, когда эти переменные инициализируются.

Самый очевидный способ сделать это, чтобы добавить <script> метку и введите свою информацию JS там, следующим образом:

?> 
    <script> 
     $(document).ready(function() { 
      var my_js_string = <?php my_php_string ?> 
      my_js_function(); 
     }); 
    </script> 
    <?php 

Таким образом, у меня есть глобальный JS вар и функция работает в документе. готов.

Однако это кажется неправильным. Если мне нужно создать несколько переменных JS из PHP, код будет раздутым со сценариями и document.ready (s) повсюду. Даже когда document.ready не требуется, инициализация многих глобальных переменных JS с использованием этого метода делает код намного сложнее читать и отлаживать. Наличие JS-глобалов - плохая практика. Плюс, что, если это конфиденциальная информация? Вы не хотите, чтобы он плавал как глобальный, к которому может обратиться любой.

Любые рекомендации по лучшей методологии?

Один из вариантов, о котором я думал, - это создание событий, заполнение событий информацией, а затем извлечение их из соответствующего .js-файла, создание локальных переменных, но это может вызвать одну и ту же проблему, много ненужных событий, плавающих вокруг.

Еще один способ, по-моему, состоит в том, чтобы создавать элементы HTML, содержащие данные, либо в виде обычного текста, либо как атрибуты data- или любой другой метод. Это хорошая практика в некоторых случаях, но я не думаю, что это лучший способ, когда у вас много переменных или переменные содержат конфиденциальную информацию, которую вы не хотите показывать в DOM.

Если это дублирующийся ответ или вы можете направить меня к соответствующим статьям, которые касаются этого, я был бы признателен, поскольку я не знал, как правильно искать это и не мог найти хорошие ресурсы.

+0

Получите конфиденциальную информацию через AJAX. – JustOnUnderMillions

+1

Но «доступ к любому из них» - это то, как работает javascript. Откройте с помощью консоли разработчика F12' в браузере, вы можете видеть и получать доступ к тому, что вы найдете (и манипулировать/изменять его [также сам код]). Keep in Mind: НИКОГДА НЕ ДОЛЖЕН ПОЛЬЗОВАТЬСЯ ПОЛЬЗОВАТЕЛЕМ – JustOnUnderMillions

+0

Это правда. AJAX, а затем удалить информацию после ее использования. Я думаю, что AJAX - это способ пойти, спасибо @JustOnUnderMillions –

ответ

1

Лично мне не нравится генерировать JavaScript из PHP, поэтому я обычно либо добавляю данные к значениям скрытых входов, если это всего лишь небольшая сумма, либо иным образом загружает данные отдельно с помощью AJAX и JSON, что просто кажется более чистым для меня, хотя для этого требуется отдельный HTTP-запрос.

Вот краткий пример того, как сделать это с помощью AJAX и JSON с JQuery:

В .js файл для вашей страницы оных:

// When the document is ready 
$(function(){ 
    $.post('get_json.php', function(response){ 
     console.log(response.data) 
    }, 'json')  
}) 

В файле get_json.php:

<?php 
    // Create an array with the data you want to send back 
    $response = array(
     'data' => 'test' 
    ); 
    echo json_encode($response); 
+0

Спасибо! Я догадывался, что что-то по этой линии было хорошим вариантом, мне просто интересно, есть ли другой способ. –

Смежные вопросы