How to embed php script in javascript?
36831 просмотра
6 ответа
I want to know if I can include php
scripts in javascript
[1] the same way it can be done in html
[2]
server.php:
<?php
echo 'hello World';
?>
client.js (or client.php if necessary):
function foo() {
var i = <?php include('server.php'); ?>
console.log( i );
}
If it can be done, and if client.php
must be used instead, I would really appreciate a minimal example with index.html/index.php
as well, since I would like to see how I would include client
now that it is a php
file and not javascript
Ответы (6)
4 плюса
You can use output buffering to achieve something similar, although it's not possible to directly embed PHP code in JS.
Example:
server.php
<?php
echo 'hello World';
?>
client.php - (.php extension enables the ability to parse PHP tags, but really outputs 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 . Обратите внимание, как я сказал «возврат» вместо вывода - если ваш server.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
.
2 плюса
Это должен быть файл .php. Вы должны установить это в качестве первой строки в вашем client.php:
header("Content-type: text/javascript");
Затем вы можете создать такой файл и просто включить его и использовать как обычный файл javascript. Так с <script>
тэгом, так как теперь он распознается как JavaScript
2 плюса
Чтобы встроить 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, поэтому при этом нужно быть очень внимательным.
2 плюса
Проще всего было бы использовать 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.
Автор: Rsaesha
Размещён: 22.11.2011 01:36
1 плюс
Я протестировал это решение на PHP 5.5.
1. Создайте файл с именем myScript.php.
// myScrpt.php content:
<?php $fname = "Jason"; $lname = "Kent"; ?>
- Создайте файл с именем test.php.
// test.php content:
<!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>
- Когда вы откроете test.php в браузере, вы получите:
Мое полное имя Джейсон Кент.
Автор: Dah Moymy Размещён: 18.11.2014 06:090 плюса
У вас не может быть клиента, загружающего 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 );
}
по существу переменная я могу быть загружен в качестве глобальной переменной на странице
или, как предлагает другой пост, замаскируйте php-файл как js.
Автор: user986139 Размещён: 22.11.2011 01:40Вопросы из категории :
- php Как вы отлаживаете PHP-скрипты?
- php Заставьте XAMPP / Apache обслуживать файл вне htdocs
- php Как включить файлы PHP, которые требуют абсолютного пути?
- php Скрипт входа со скрытыми кнопками
- php How can I find unused functions in a PHP project
- javascript Как определить, какой из указанных шрифтов был использован на веб-странице?
- javascript Валидация клиентской стороны ASP.Net
- javascript Длина объекта JavaScript
- javascript Получение текста из выпадающего списка
- html Определить часовой пояс пользователя
- html Как мне дать моим веб-сайтам значок для iPhone?
- html Как отключить автозаполнение браузера в поле веб-формы / теге ввода?
- html Как автоматически изменить размер текстовой области с помощью Prototype?
- include Динамически загружать файл JavaScript
- include В чем разница между #include <filename> и #include "filename"?
- include Как мне включить файл более 2 каталогов обратно?
- include Заголовки, включающие друг друга в C ++
- include Запретить прямой доступ к файлу php