Вставка php в js-файл

У меня есть gif для галереи на моем сайте. В моем js-файле у меня есть этот код, чтобы показать загрузчик:

image: $("<img src='images/loading.gif'/>"), 

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

 <img src="<?php bloginfo('url');?>/images/loading.gif”> 

Но я не могу понять, как сделать эту работу php в моем js-файле. Как мне сделать это самым простым способом?

Я предпочитаю..

1) В мой заголовок include (php include, содержащий любые данные <head>), напишите небольшую встроенную функцию JS, которая создает глобальный объект, содержащий любые переменные, которые мне нужны с сервера (PHP). Я могу использовать функции «echo» и «json_encode» здесь, потому что это в встроенном фрагменте JS в php-файле.

2) Вы можете написать JS-функцию внутри вашего JS-файла, который использует AJAX для вызова PHP-файла, который будет возвращать те же JSON-кодированные данные, что и номер 1, затем вы проанализируете его и назначаете глобальную переменную.

Оба по существу делают то же самое, за исключением того, что вы используете AJAX, что добавит дополнительный запрос. Я предпочитаю вариант 1, потому что он выполняется вместе с выполнением страниц. Вариант 2 может потребовать от вас ждать, пока DOM будет готов, в зависимости от различных аспектов вашей программы (в которых я не могу сказать).

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

Я не совсем уверен, что вы пытаетесь сделать. Но если этот JS не работает, почему бы не включить php-файл или просто написать некоторый php в заголовке, который включает JS внутри него в 'echo ()'. То есть:

  echo('?><img src="<?php bloginfo('url');?>/images/loading.gif" /><?php'); 

Поправьте меня, если я неправильно понимаю ваши намерения.

Вы не можете помещать PHP-код непосредственно в файл .js, но у вас может быть некоторый javascript в элементе head вашего PHP-файла прямо перед включением файла javascript.

В этом javascript вы могли бы определить переменные и присвоить им данные с помощью PHP. Эти переменные затем будут доступны изнутри файла javascript.

 <head> <script type='text/javascript'> var _g_bloginfo = "<?php echo '...'; ?>"; </script> <script type='text/javascript' src='javascript.js'></script> </head> 

Чистый метод передачи данных PHP в JavaScript – это сохранение данных в атрибутах данных, доступ к которым вы можете получить через JavaScript. В качестве простого примера:

 <body data-home-url="<?php echo home_url(); ?>"> 

Вы можете получить доступ к этому в jQuery, например:

 var home = $('body').attr('data-home-url'); 

FYI вы можете использовать json_encode для преобразования объектов / массивов PHP в объекты JSON, которые вы можете прочитать через $ .parseJSON или JSON.parse . WP wp_localize_script действительно может сделать это для вас, но обратите внимание, что в этом случае он отобразит преобразованные данные в окно .

Вместо этого вы можете создать файл php (из вашего js-файла со всем кодом, который у вас уже есть в этом файле js +, ссылки на ваши PHP-переменные / функции) и включить его в основной файл php.

Пример html:

 <?php $example = 23; ?> <html> <head><title></title> <script type="text/javascript"> <?php include('js.php'); ?> </script> </head> <body></body> </html> 

js.php:

 var a = <?= $example ?>; alert(a); 

в конечном итоге выйдет:


 <html> <head><title></title> <script type="text/javascript"> var a = 23; alert(a); </script> </head> <body></body> </html>