У меня есть файл JavaScript (расширение .js
, а не .html
), содержащий несколько функций JavaScript.
Я хочу вызвать одну из функций PHP в PHP-файле, содержащем только несколько функций PHP из одной из функций JavaScript.
.php
файл, содержащий функцию PHP в файле .js
? myFunc
которая принимает два параметра ( param1
и param2
). Тогда у меня есть .js
файл, содержащий функцию myJsFunc
. Как вызвать myFunc
(PHP) из функции myJsFunc
(JavaScript)? Разве мне не нужно каким-либо образом включать файл PHP в файл .js
? Если вам просто нужно передать переменные из 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 обычно является « application / javascript »
PHP и JS несовместимы; вы не можете просто включить функцию PHP в JS. Скорее всего, вы захотите сделать запрос AJAX с JavaScript и отправить ответ JSON с помощью PHP.
Немного измененная версия, основанная на Blorgbeard, для легко ссылающихся ассоциативных массивов php для литералов объектов javascript:
Сначала определите массив со значениями, которые будут использоваться в 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>
Теперь мы можем получить доступ к литералу объекта javscript из любого другого .js-файла с обозначением:
phpVars["value1"] phpVars["value2"]
Это несколько сложно, поскольку PHP получает оценку на стороне сервера, а javascript оценивается на стороне клиента.
Я бы назвал ваш PHP-файл, используя вызов AJAX из javascript, а затем использовал JS для вставки возвращаемого HTML-кода на вашу страницу.
На самом деле лучший способ выполнить это – написать javascript в .php и использовать jquery в отдельном файле для использования файла сценария Jquery get или использования функции загрузки jquery в php include в документе, где будет работать javascript. По сути, так оно и будет выглядеть.
Динамический файл Javascript в расширении файла .php. Содержит смесь php-переменных, предварительно обработанных сервером, и javascript, который нуждается в этих переменных в скриптах.
Статический файл Js – с помощью http://api.jquery.com/jquery.getscript/ или http://api.jquery.com/load/
На главной странице html вызовите статический файл как обычный файл js. Вызов статического js-файла заставит загружать динамические данные с сервера.
some file.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 означает асинхронность!
Таким образом вы можете сделать двойное разрешение файла: «filename.php.js». PHP генерирует JS в этом файле. У меня есть все параметры из БД. Это сработало для меня на xampp.
Не существует безопасного способа включить 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 в js-файл без включения js в php-код или PHP-скрипт в js.