我有一个包含多个JavaScript函数的JavaScript文件(扩展名.js
,而不是.html
)。
我想调用PHP文件中的一个PHP函数,该函数只包含一个JavaScript函数中的几个PHP函数。
.php
文件中“包含”包含PHP函数的.js
文件?myFunc
的函数,该函数有两个参数(param1
和param2
)。然后我有一个.js
文件,其中包含一个名为myJsFunc
的函数。如何从myFunc
(JavaScript函数)中调用myJsFunc
(PHP)?我不需要在.js
文件中以某种方式包含PHP文件吗?答案 0 :(得分:53)
如果你只需要将变量从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>
答案 1 :(得分:24)
AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js
<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>
在.htaccess文件中添加上述代码,并在js文件中运行php
危险:这将允许客户端潜在地查看PHP文件的内容。如果您的PHP包含任何敏感信息(通常是这样),请不要使用此方法。
如果您必须使用PHP生成JavaScript文件,那么请使用纯PHP生成整个JS文件。你可以使用普通的.PHP文件,就像通常输出html一样,区别在于使用PHP的头函数设置正确的头文件,以便将正确的mime类型返回给浏览器。 JS的mime类型通常是“ application / javascript ”
答案 2 :(得分:10)
答案 3 :(得分:9)
基于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>
现在我们可以使用以下符号从任何其他.js文件访问javscript对象文字:
phpVars["value1"]
phpVars["value2"]
答案 4 :(得分:6)
这有点棘手,因为PHP被评估为服务器端,而javascript被评估为客户端。
我会使用javascript中的AJAX调用来调用您的PHP文件,然后使用JS在页面的某处插入返回的HTML。
答案 5 :(得分:3)
实际上,实现此目的的最佳方法是在.php中编写javascript并在单独的文件中使用jquery来使用Jquery get脚本文件或jquery在javascript将存在的doc中使用php include函数。基本上这就是它的外观。
.php文件扩展名中的动态Javascript文件 - 包含服务器预处理的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的问题。将数据处理在后台然后让用户等待数据的延迟会很好。您也可以绕过第二个文件,只需在主html页面上使用php的包含,您就可以在主页面上显示您的javascript。对于由您自己决定的表现以及您希望如何处理所有这些。
答案 6 :(得分:1)
您不能在客户端javascript中包含服务器端PHP,您必须将其移植到javascript。如果您愿意,可以使用php.js,它将所有PHP函数移植到javascript。您还可以创建一个新的php文件,该文件返回调用PHP函数的结果,然后使用AJAX调用该文件以获得结果。
答案 7 :(得分:1)
因为Javascript在浏览器,客户端和服务器端的PHP上执行,所需的是AJAX - 实质上,您的脚本向PHP脚本发出HTTP请求,传递任何所需的参数。该脚本调用您的函数,并输出结果,最终由Ajax调用拾取。通常,您不会同步执行此操作(等待结果) - AJAX中的“A”代表异步!
答案 8 :(得分:1)
您可以制作文件的双重分辨率: 以这种方式“filename.php.js”。 PHP在此文件中生成JS。 我从DB获得了所有参数。 这对xampp来说很有用。
答案 9 :(得分:1)
没有任何安全的方法可以将php
个文件包含到js
中。
您可以在php文件中以 define
将您的php文件数据设为 javascript global variable
。例如,我有三个变量,我想用作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。
答案 10 :(得分:1)
不要使用通用的 php 处理程序,而是使用重写来处理 1-file 异常:
将 .js 文件重命名为 .php 并重写请求以使其响应 .js 请求。如果文件由 apache 提供;添加.htaccess:
RewriteEngine on
RewriteRule myjsfile\.js myjsfile.php [L]
其次让 .php 文件伪装成 js 文件。在 php 文件中,文件开头为:
<?php header('Content-Type: application/javascript'); ?>
等等,您现在可以在“.js”文件中使用 php-tags。