Правильный способ передать переменную из серверной части в JavaScript? - PullRequest
2 голосов
/ 18 февраля 2009

Мне нужно передать переменную, о которой знает php, в мой код javascript, и мне интересно, как это сделать правильный .

Я уже знаю, что могу добавить это к генерации страницы:

<script type="text/javascript">
var someJSVariable = <?php echo $somePHPVariable ?>
</script>

Но я считаю этот метод более навязчивым, чем хотелось бы. Мне интересно, есть ли лучший способ сделать это, или я застрял с необходимостью просто вставить встроенный код JavaScript в скрипт вида?

Ответы [ 3 ]

3 голосов
/ 18 февраля 2009

Если это всего лишь 1 переменная, я думаю, что это лучшее решение. Если вы не хотите смешивать JS с обычным представлением, создайте отдельное представление, которое будет отображаться в виде файла .js, а затем просто включите ссылку на этот файл .js в ваше «реальное» представление. Если вам нужна производительность, вам понадобится умная ловля.

Если имеется более 1 переменной, например, для обмена данными между HTML-документом и сервером, вы можете использовать [AJAX] (http://en.wikipedia.org/wiki/Ajax_(programming)).

1 голос
/ 18 февраля 2009

Я люблю json_encode() за подобные вещи.

Но да, вы "застряли" с этим встроенным подходом. Честно говоря, вы бы предпочли это?

$js = '<script type="text/javascript">';
$js .= "var someJSVariable = " . $somePHPVariable;
$js .= '</script>';

// some time later
echo $js;

Не думаю, что так. Встроенный подход - это php's bread and butter. Иди с этим.

0 голосов
/ 18 февраля 2009

Вы всегда можете сделать асинхронный запрос к отдельному URL, чтобы получить динамическое значение. Но при загрузке страницы вы получите небольшое снижение производительности. Имея это в виду, я бы порекомендовал встроенный метод, который вы изложили.

Вы также можете включить другой файл "js", который на самом деле является страницей PHP и генерирует набор констант javascript, к которым вы затем можете обращаться на главной странице.

...