Включить PHP внутри JavaScript (.в JS) файлы

у меня есть файл JavaScript (расширение .js, а не .html), содержащий несколько функций JavaScript.

я хочу вызвать одну из функций PHP в файле PHP, содержащем только несколько функций PHP из одной из функций JavaScript.

  • это возможно?
  • мне нужно было бы "включить".php файл, содержащий функцию PHP в ?
  • как бы я это сделал?
    например, скажем, я был файл с названием проекта "MyLib".php, содержащий функцию myFunc, которая принимает два параметра (param1 и param2). Тогда у меня есть содержащих функцию под названием myJsFunc. Как бы назвать myFunc (PHP) изнутри myJsFunc (функции JavaScript)? Не нужно ли мне как-то включить PHP-файл в ?

10 ответов


7 лет обновление: это ужасный совет. Пожалуйста, не делай этого.

Если вам просто нужно передать переменные из PHP в javascript, вы можете иметь тег в файле php/html, используя javascript для начала.

<script type="text/javascript">
    phpVars = new Array();
    <?php foreach($vars as $var) {
        echo 'phpVars.push("' . $var . '");';
    };
    ?>
</script>
<script type="text/javascript" src="yourScriptThatUsesPHPVars.js"></script>

если вы пытаетесь вызвать функции, то вы можете сделать это такой

<script type="text/javascript" src="YourFunctions.js"></script>
<script type="text/javascript">
    functionOne(<?php echo implode(', ', $arrayWithVars); ?>);
    functionTwo(<?php echo $moreVars; ?>, <?php echo $evenMoreVars; ?>);
</script>

AddType application/x-httpd-php .js

AddHandler x-httpd-php5 .js

<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>

добавьте приведенный выше код .htaccess файл и запустить php внутри JS файлов

опасность: это позволит клиенту потенциально увидеть содержимое ваших файлов PHP. Не используйте этот подход, если ваш PHP содержит конфиденциальную информацию (что обычно и происходит).

Если вы должны использовать PHP для создания файлов JavaScript, то, пожалуйста, используйте чистый PHP для создания всего файла JS. Вы можете сделать это, используя нормальный.PHP файл точно такой же таким образом, вы обычно выводите html, разница заключается в установке правильного заголовка с помощью функции заголовка PHP, так что правильный тип mime возвращается в браузер. Тип mime для JS обычно"приложение / javascript"


слегка измененная версия, основанная на Blorgbeard one, Для легко ссылающихся ассоциативных PHP-массивов на объектные литералы javascript:

PHP файл (*.в PHP)

сначала определите массив со значениями, которые будут использоваться в файлах javascript:

<?php
$phpToJsVars = [
  'value1' => 'foo1',
  'value2' => 'foo2'    
];
?>

теперь запишите значения массива php в литерал объекта javascript:

<script type="text/javascript">
var phpVars = { 
<?php 
  foreach ($phpToJsVars as $key => $value) {
    echo '  ' . $key . ': ' . '"' . $value . '",' . "\n";  
  }
?>
};
</script>

файл Javascript (*.в JS)

Теперь мы можем получить доступ к объектному литералу javscript из любого другого .файл JS с пометкой:

phpVars["value1"]
phpVars["value2"]

PHP и JS несовместимы; вы не можете просто включить функцию PHP в JS. То, что вы, вероятно, хотите сделать, это выпустить AJAX запрос из JavaScript и отправить JSON ответ с использованием PHP.


Это несколько сложно, так как PHP получает оценку на стороне сервера, а javascript получает оценку на стороне клиента.

Я бы вызвал ваш PHP-файл, используя вызов AJAX из javascript, а затем использовал JS для вставки возвращенного HTML где-то на Вашей странице.


на самом деле лучший способ сделать это-написать javascript в a .php и использовать jquery в отдельном файле для использования файла сценария jQuery get или загрузки jQuery используйте функцию php include в документе, где будет жить javascript. По сути, так это и будет выглядеть.

динамический файл Javascript в a .php расширение файла-содержит смесь PHP переменных, предварительно обработанных сервером и javascript, который нуждается в этих переменных в скриптах.

Статический Js Файл-Использование http://api.jquery.com/jquery.getscript/ или http://api.jquery.com/load/

на главной странице html вызовите статический файл как обычный JS-файл. Вызов статического JS-файла заставит загрузить динамические данные с сервера.

какой-то файл.на PHP 1:

<?php
$somevar = "Some Dynamic Data";
?>

$('input').val(<?php echo $somevar?>);

или просто эхо скрипт, такие как

echo "$('input').val(".$somevar.");";

2: somejsfile.js:

$("#result").load( "file.php" );

файл 3 myhtml.HTML-код:

<script src="somejsfile.js"></script>

Я считаю, что это ответ на вопрос для многих людей, которые хотят смешать php и javascript. Было бы неплохо иметь этот процесс данных в фоновом режиме, а затем у пользователя есть задержки, ожидающие данных. Вы также можете обойти второй файл и просто использовать php include на главной странице html, у вас будет только ваш javascript на главной странице. На производительности это ты и то, как ты хочешь справиться со всем этим.


вы не можете включить PHP на стороне сервера в javascript на стороне клиента, вам придется перенести его на javascript. Если вы хотите, вы можете использовать php.js, который переносит все функции PHP на javascript. Вы также можете создать новый PHP файл, который возвращает результаты вызова функции PHP, а затем вызвать этот файл с помощью AJAX, чтобы получить результаты.


поскольку Javascript выполняется в браузере, на стороне клиента и PHP на стороне сервера, вам нужно AJAX - по сути, ваш скрипт делает HTTP-запрос скрипту PHP, передавая любые необходимые параметры. Скрипт вызывает вашу функцию и выводит результат, который в конечном итоге получает вызов Ajax. Как правило, вы не делаете это синхронно (ожидая результата) - " A " в AJAX означает асинхронный!


вы можете сделать двойное разрешение файла: "имя файла.РНР.АО" таким образом. PHP генерирует JS в этом файле. Я получил все параметры из DB. Это сработало для меня на xampp.


нет никакого безопасного способа включить на js.

одна вещь, которую вы можете сделать как define ваши данные файла php как javascript global variable в файле php. например, у меня есть три переменные, которые я хочу использовать как js.

abc.в PHP

<?php
$abc = "Abc";
$number = 052;
$mydata = array("val1","val2","val3");
?>
<script type="text/javascript">
var abc = '<?php echo $abc?>';
var number = '<?php echo $number ?>';
var mydata = <?php echo json_encode($mydata); ?>;
</script>

после use в своем js file везде, где вы хотите использовать.

abc.Яш

function test(){
   alert('Print php variable : '+ abc +', '+number); 
}

function printArrVar(){
  alert('print php array variable : '+ JSON.stringify(mydata)); 
}

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

это стандартный способ вызова данных PHP-скрипта в JS-файл без включения js в php-код или php-скрипт в js.