Как встроить php-скрипт в javascript?

Я хочу знать, могу ли я включить php скрипты в javascript [1] так же, как это можно сделать в html [2]

 server.php: <?php echo 'hello World'; ?> 

client.js (или client.php, если необходимо):

 function foo() { var i = <?php include('server.php'); ?> console.log( i ); } 

Если это можно сделать, и если client.php нужно использовать client.php , я бы очень оценил минимальный пример с index.html/index.php , так как я хотел бы видеть, как я буду включать client сейчас, php файл, а не javascript

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

Пример:

server.php

 <?php echo 'hello World'; ?> 

client.php – (расширение .php позволяет анализировать теги PHP, но на самом деле выводит JS)

 <?php header("Content-type: application/x-javascript"); // Or 'text/javascript' ob_start(); include( 'server.php'); $i = ob_get_contents(); ob_end_clean(); ?> function foo() { var i = '<?= json_encode( $i); ?>'; console.log( i ); } 

Изменить: если файл server.php возвращает только простую строку, вы можете изменить свой код для client.php . Обратите внимание, как я сказал «return» вместо вывода. Если ваш сервер.php выводит что-либо, он будет отправлен в браузер как выходной (не то, что вы хотите). Кроме того, вы можете установить переменную в server.php, которая выводится в client.php или инкапсулирует ваш код в функцию:

server.php

 <?php function js_output() { return 'hello world'; } ?> 

client.php

 <?php header("Content-type: application/x-javascript"); // Or 'text/javascript' ?> function foo() { var i = '<?php include( 'server.php'); echo addslashes( js_output()); ?>'; console.log( i ); } 

Примечание. Также вы можете добавить вызов html_entities или htmlspecialchars .

Он должен быть .php-файлом. Вы должны установить это как первую строку в вашем client.php:

 header("Content-type: text/javascript"); 

Затем вы можете создать такой файл и просто включить его и использовать в качестве обычного файла javascript. Таким образом, с <script> , поскольку он теперь распознается как JavaScript

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

Файл client.php должен включать эту строку, прежде чем что-либо выводится пользователю:

 header("Content-type: text/javascript"); 

Что касается базового примера index.html / index.php:

 <html> <head> <title>Example</title> <script type="text/javascript" src="client.php"></script> </head> <body> ... </body> </html> 

Обновление: пример файла client.php:

 <?php header("Content-type: text/javascript"); // This bit must come first! ?> var i = "<?php echo $somevar; ?>" // This is JavaScript code with some PHP embedded. 

Чтобы внедрить PHP в файл, сервер должен передать его через парсер PHP, и он будет делать это только с использованием типов файлов, которые, как было сказано, содержат разметку PHP, то есть файлы .php. Вы могли бы также сказать, что сервер также разбирает js-файлы, но я не уверен, правильно ли будет установлен тип mime. Это также потребует изменения настроек сервера. Если вы вызываете javascript-файл .php, тип mime определенно будет неправильным. Самый совместимый способ сделать это – поставить javascript в html-файл (т. Е. Ваш .php-файл). Если вы хотите, чтобы количество javascript в ваших .php-файлах было минимальным, вы можете просто поместить переменные-назначения в файл .php и оставить все остальное в своем файле javascript.

server.php:

 <script language="javascript"> var some_var = "<?php echo $SOME_VAR ?>"; </script> <script src="client.js" type="text/javascript"> 

client.js:

 alert(some_var); 

(Глобальная) переменная javascript some_var будет установлена ​​на значение, которое имеет переменная PHP $SOME_VAR . Не забывайте кавычки при настройке строковых значений. Также, если код PHP содержит ошибки, вы можете заразить код javascript, поэтому при выполнении этого нужно много внимания.

У вас не может быть клиентская загрузка PHP. Единственный способ сделать это – иметь на сервере server.php

 <html> <head> <script type="text/javascript"> function foo() { var i = <?php echo 'hello World'; ?> console.log( i ); } </script> </head> <body> </body> </html> 

По существу, загрузка javascript в тело страницы. Или альтернативно.

  <html> <head> <script type="text/javascript"> var i = <?php echo 'hello World'; ?> </script> <script type="text/javascript" src="client.js"> </head> <body> </body> </html> 

И в client.js

 function foo() { console.log( i ); } 

по существу переменная i может быть загружена как глобальная переменная на странице

или, как предлагает другая публикация, masquerade php-файл как js.

Я протестировал это решение на PHP 5.5.
1. Создайте файл с именем myScript.php.

// содержание myScrpt.php:

 <?php $fname = "Jason"; $lname = "Kent"; ?> 
  1. Создайте файл test.php.

// содержимое test.php:

 <!DOCTYPE html> <html> <head> <title>Include php Script</title> <script type="text/javascript"> <?php include 'myScript.php'; ?> </script> </head> 
 <h1>The result is:</h1> <?php echo "My full name is $fname $lname."; ?> </body> </html> 
  1. Когда вы открываете test.php в браузере, вы получите:

Мое полное имя – Джейсон Кент.