Не могу передать переменную php в javascript в Eclipse IDE

Мне нужно инициализировать некоторую переменную js, передав переменную php <some javascript>.js файл, в моем PHP-проекте под Eclipe Luna IDE (PDT)

Когда я пытаюсь сделать:

if (typeof strPreviewImg == 'undefined') {
            strPreviewImg = <?php echo(plugin_dir_url( __FILE__ )."images/vpreview_center.png"); ?>;
}

У меня есть следующие ошибки от Eclipse:

Несколько маркеров в этой строке - Синтаксическая ошибка, вставьте ": Выражение" для завершения Выражение - Синтаксическая ошибка на токене "<", неверное выражение - Синтаксическая ошибка на токене, удалите эти токены

Когда я пытаюсь использовать кавычки:

if (typeof strPreviewImg == 'undefined') {
                strPreviewImg = "<?php echo(plugin_dir_url( __FILE__ ).\"images/vpreview_center.png\"); ?>";
    }

Целое выражение php передается в виде строки в мой HTML-код:

<video poster="<?php echo(plugin_dir_url( __FILE__ ).'images/vpreview_center.png)'; ?>">

Итак, я делаю что-то не так или есть какая-то проблема с Eclipse PDT?

Спасибо

1 ответ

Решение

Я вычел из вашего использования plugins_dir_url() что вы используете WordPress.

в WordPress, после использования wp_enqueue_script() Чтобы зарегистрировать дескриптор скрипта, вы можете "локализовать" данные, чтобы они были доступны глобально на стороне клиента.

с WordPress/PHP:

<?php
$args = array(
    'var1'  =>  'value 1',
    'var2'  =>  'value 2'
);
wp_localize_script( 'your_handle', 'your_cdata', $args );
?>

результаты в cdata в вашем документе <head>

<head>
<script type='text/javascript'>
/* <;![CDATA[ */
var your_cdata = {"var1":"value 1","var2":"value 2"};
/* ]]> */
</script>
</head>

тогда ваш javascript может использовать:

alert(your_cdata.var1);
alert(your_cdata.var2);

Необязательно вы можете использовать PHP для обслуживания файлов Javascript, установив URL-адрес вашего src в файл PHP:

<script type="text/javascript" src="url_to_your_php_file.php" /></script>

или с переменными $_GET

<script type="text/javascript" src="url_to_your_php_file.php?var1=value1" /></script>

затем в "your_php_file.php":

<?php
header( 'content-type: text/javascript' );
// possible database query here using $_GET[$var1]
$value = 'some value';
?>
function name() {
    var example1 = '<?php echo '"' . $value . '"'; ?>';
    var example2 = '<?php echo '"some other data"'; ?>';
    alert( example1 + ' / ' + example2 );
}
<?php
// and even do further includes to additional files (php, js, etc)
@include 'local_path_to_some_other_file.js';
exit;
?>

ПОСЛЕДНЕЕ вы можете скопировать пример WordPress самостоятельно:

<head>
<script type='text/javascript'>
/* <![CDATA[ */
var your_cdata = {
    "var1":<?php echo '"value 1"'; ?>,
    "var2":<?php echo '"value 2"'; ?>
};
/* ]]> */
</script>

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

Другие вопросы по тегам