Как вставить PHP скрипт в javascript?

Вопрос:Я хочу знать, могу ли я включать php скрипты в javascript [1] так же, как это можно сделать в html [2] server.php: client.js(или client.php при необходимости): function foo() { var i = console.log( i ); } Если это можно сделать, и если вместо этого нужно использовать client.php,

Вопрос:

Я хочу знать, могу ли я включать 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, я бы очень оценил минимальный пример с index.html/index.php, так как я хотел бы видеть, как я буду включать client теперь, когда это a 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 ); }

Edit:
Если файл 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.

Ответ №1

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

header(«Content-type: text/javascript»);

Затем вы можете создать такой файл и просто включить его и использовать в качестве обычного файла javascript. Таким образом, с тегом <script>, поскольку он теперь распознается как 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. Ответ №3

Чтобы внедрить 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, поэтому при выполнении этого нужно много внимания.

Ответ №4

Я тестировал это решение на 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 скрипт</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 в браузере, вы получите:

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

Ответ №5

У вас не может быть клиентская загрузка 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 ); }

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

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

Оцените статью
Добавить комментарий