将PHP包含在JavaScript(.js)文件中

我有一个包含多个JavaScript函数的JavaScript文件(扩展名为.js ,而不是.html )。

我想在一个PHP函数中调用其中一个PHP函数,其中包含一个JavaScript函数中的几个PHP函数。

  • 那可能吗?
  • 我是否需要在.js文件中“包含”包含PHP函数的.php文件?
  • 我该怎么做?
    例如,假设我有一个名为myLib.php的文件,其中包含一个名为myFunc的函数,它带有两个参数( param1param2 )。 然后我有一个包含名为myJsFunc函数的.js文件。 如何从myJsFunc (JavaScript函数)中调用myFunc (PHP)? 我不需要在.js文件中包含PHP文件吗?

7年后更新:这是可怕的build议。 请不要这样做。

如果您只需要将variables从PHP传递到JavaScript,则可以使用JavaScript开始,在php / html文件中包含标签。

 <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文件中添加上面的代码,并在js文件中运行php

危险:这将允许客户端可能看到您的PHP文件的内容。 如果您的PHP包含任何敏感信息(通常是这样),请不要使用这种方法。

如果您必须使用PHP来生成您的JavaScript文件,那么请使用纯PHP来生成整个JS文件。 你可以通过使用一个普通的.PHP文件来完成,就像你通常输出html的方式一样,不同的是使用PHP的头文件函数设置正确的头文件,以便正确的MIMEtypes返回给浏览器。 JS的mimetypes通常是“ application / javascript

PHP和JS不兼容; 你可能不会简单地在JS中包含一个PHP函数。 你可能想要做的是从JavaScript发出一个AJAX请求,并使用PHP发送一个JSON响应。

稍微修改的版本基于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)

现在我们可以用任何其他的.js文件使用标记来访问javscript对象的字面值:

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

这是有点棘手,因为PHP得到评估服务器端和JavaScript获得评估客户端。

我会使用JavaScript内部的AJAX调用来调用您的PHP文件,然后使用JS将返回的HTML插入页面上的某处。

实际上最好的方法是把JavaScript写在一个.php文件中,并在一个单独的文件中使用jquery来使用Jquery获取脚本文件,或者在jquery中使用php包含函数。 基本上就是这样。

在.php文件扩展名中的dynamicJavaScript文件 – 包含由服务器预处理的phpvariables和在脚本中需要这些variables的javascript的混合。

静态Js文件 – 使用http://api.jquery.com/jquery.getscript/或http://api.jquery.com/load/

在主html页面调用静态文件作为常规的js文件。 调用静态js文件将强制从服务器加载dynamic数据。

一些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的include,你就可以在主页面上显示你的javascript。 performance取决于你,以及你想如何处理所有这些。

你不能在你的客户端JavaScript包含服务器端的PHP,你将不得不把它移植到JavaScript。 如果你愿意,你可以使用php.js ,它把所有的PHP函数都转换成javascript。 你也可以创build一个新的PHP文件,返callback用你的PHP函数的结果,然后使用AJAX调用该文件来获得结果。

因为Javascript是在浏览器,客户端和服务器端的PHP中执行的,所以你需要的是AJAX – 实质上,你的脚本向PHP脚本发出一个HTTP请求,传递任何所需的参数。 脚本调用你的函数,并输出结果,最终被Ajax调用拾取。 一般来说,你不要同步(等待结果) – AJAX中的“A”代表asynchronous!

你可以用这种方法创build一个文件的双重分辨率:“filename.php.js”。 PHP在这个文件中生成JS。 我从DB获取所有参数。 这在xampp上适用于我。