Передача динамических параметров в код js - что является лучшей практикой? - PullRequest
0 голосов
/ 20 ноября 2010

Для передачи динамических значений в js-код, лучше ли это сделать следующим образом?

var myVar = '<?php echo addslashes($_SESSION['myVar']); ?>';

Или сделать вызов AJAX во время выполнения, чтобы получить переменную сеанса и присвоить ее myVar?

Какие плюсы и минусы?

Лично я предпочитаю метод AJAX.Это делает код лучше при сложных назначениях массивов и т. Д.

Хотелось бы получить экспертные заключения.

Обновления

Я понимаю, что используяметод AJAX, каждый HTTP-запрос считается.Но если у нас есть хорошо определенные функции внутри файлов javascript, нам нужно было бы только иметь доступные параметры функции.И параметры могут быть переданы в вызовах функций всякий раз, когда мы хотим вызвать их, например, так: -

<a onclick="some_function('<?php echo $_SESSION['var'] ?>')">

Это, как я обычно делаю, и в моем проекте мне редко нужно передавать их встроенными в JavaScriptфайлы.И у меня есть AJAX-вызовы для выполнения обработки на стороне сервера (конечно, когда это необходимо).

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 20 ноября 2010

Во-первых, обратите внимание, что вы на самом деле не генерируете код Javascript динамически; Вы используете PHP для передачи значения аргумента в браузер.

Если это единственная (или основная) функциональность PHP в вашем коде, лучше использовать AJAX, а не генерировать саму страницу с использованием PHP (т.е. использовать файл .html вместо .php). Причина: работает быстрее, так как большая часть содержимого хранится статически.

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

1 голос
/ 20 ноября 2010

AJAX-вызов - это еще один запрос, и результаты не будут немедленно доступны - запись динамических данных в линию доступна сразу.В этом случае я бы предпочел встроенный подход.

PHP * json_encode() может сделать относительно легко выписывать даже огромные массивы без особой загроможденности кода.

...