Подтвердить что ты не робот

Включить PHP в файлы JavaScript (.js)

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

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

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

Ответ 1

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>

Ответ 2

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 обычно " application/javascript"

Ответ 3

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

Ответ 4

Немного измененная версия, основанная на Blorgbeard, для легко ссылающихся ассоциативных массивов 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"]

Ответ 5

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

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

Ответ 6

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

Динамический файл Javascript в расширении файла .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?>);

или просто эхо-сигнал script, например

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 на главной странице. Для производительности, которая зависит от вас и как вы хотите справиться со всем этим.

Ответ 7

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

Ответ 8

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

Ответ 9

Вы можете сделать двойное разрешение файла: "filename.php.js" таким образом. PHP генерирует JS в этом файле. У меня есть все параметры из БД. Это работало для меня на xampp.

Ответ 10

Нет безопасного способа включить php файл в 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.js

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

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

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

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