How to embed php script in javascript?

php javascript html include

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

Автор: puk Источник Размещён: 12.11.2019 09:04

Ответы (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.

Автор: nickb Размещён: 22.11.2011 01:37

2 плюса

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

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

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

Автор: Rene Pot Размещён: 22.11.2011 01:35

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

Автор: brainchild Размещён: 22.11.2011 01:50

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";
?>
  1. Создайте файл с именем 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> 
  1. Когда вы откроете test.php в браузере, вы получите:

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

Автор: Dah Moymy Размещён: 18.11.2014 06:09

0 плюса

У вас не может быть клиента, загружающего 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
Вопросы из категории :
32x32