2014-02-21 2 views
2

Каков наилучший способ передать серверную переменную PHP в Javascript?Передать серверные переменные в Javascript в PHP

Для упрощения задачи предположим, что мы имеем переменную в PHP ($phpVar), и мы хотим, чтобы присвоить ее значение переменной JavaScript (jsVar)

файлы Javascript загружаются в HTML - они не создали динамичный!

Некоторые пищу для размышлений:

1. Печать с PHP перед загрузкой файлов JavaScript:

<script language="javascript" type="text/javascript"> 
     var jsVar= <?php echo $phpVar?>; 
    </script> 

2. Хранить в DOM (в скрытых элементов)

а. в PHP:

<span data-name="phpVar" data-value="<?php echo $phpVar?>"></span> 

b. Читайте в JavaScript-файлов (предполагается, что JQuery доступен):

var jsVar= $('span[data-name="phpVar"]').attr('data-value'); 

3. Задайте его с помощью AJAX после загрузки страницы

Obviosly не является лучшим решением. Не подходит для всех сценариев и требует дополнительного запроса ...

В заключение:

  • Они оба, кажется уродливым мне ... Есть ли лучший подход?
  • Есть ли какие-либо фреймворки, которые могут обрабатывать эти зависимости? Пожалуйста, держите реконфигурацию сервера минимальной.
+0

Я использую вариант 1. –

+0

Решение 1, если значение не зависит от динамически пользовательского взаимодействия, решение 3 в противном случае. Почему они вам не нравятся? – dirluca

+0

AJAX - лучший способ, в каком сценарии, по вашему мнению, ajax не хорошо? –

ответ

1

Это зависит от ситуации, но в общем, преимущественно для использования в первом случае. Но не забывайте о кавычках, если вы передаете строку:

<script language="javascript" type="text/javascript"> 
    var jsVar = '<?php echo $phpVar?>'; 
</script> 
2

Наилучший подход будет предоставлять «внутренний API» запрошенный через AJAX со стороны клиента. В этом случае вы можете разделить свои стороны.

После этого самый быстрый способ печати в общем файле значений, которые вы хотите использовать (как вы писали в своем вопросе).

В последнее примечание: если вы носите на со вторым способом я хотел бы предложить вам

json_encode() 

как очень полезный метод, чтобы передать массивы и объекты из PHP в JavaScript.

Так что если у вас есть PHP массив:

$array = array("a" => 1, "b" => 2); 

<script language="javascript" type="text/javascript"> 
    var js_array= <?php echo json_encode($array) ; ?>; 
</script> 
+0

Это то, что предлагает @DanFromGermany –

+0

@Victor Кто? Я просто написал то, что знаю, это лучшее. Я не знаю, предложил ли кто-нибудь еще. Можете ли вы предоставить нам свой ответ? Благодарю. –

+0

Вы можете прочитать [комментарии] (http://stackoverflow.com/questions/21930987/pass-server-side-variables-to-javascript-in-php#comment33219972_21930987) :) –

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