如何在JavaScript中嵌入php脚本?

时间:2011-11-22 13:31:19

标签: php javascript html include

我想知道我是否可以在php [1]中添加javascript个脚本,就像html [2]

一样
server.php:
<?php
    echo 'hello World';
?>

client.js(如果需要,还是client.php):

function foo() {
    var i = <?php include('server.php'); ?>
    console.log( i );
}

如果可以这样做,并且必须使用client.php,我会非常感谢使用index.html/index.php的最小示例,因为我希望看到我将如何包含{{1}现在它是client文件,而不是php

6 个答案:

答案 0 :(得分:4)

您可以使用输出缓冲来实现类似的功能,尽管不可能直接在JS中嵌入PHP代码。

示例:

server.php

<?php
    echo 'hello World';
?>

client.php - (.php扩展能够解析PHP标记,但确实输出JS)

<?php
header("Content-type: application/x-javascript"); // Or 'text/javascript'
ob_start();
include( 'server.php');
$i = ob_get_contents();
ob_end_clean();
?>
function foo() {
    var i = '<?= json_encode( $i); ?>';
    console.log( i );
}

修改 如果 server.php 文件只返回一个简单的字符串,那么您可以修改 client.php 的代码。注意我是如何说“返回”而不是输出 - 如果你的 server.php 输出任何东西,它将作为输出发送到浏览器(不是你想要的)。或者,您可以在 server.php 中设置一个变量,该变量在 client.php 中输出,或者将您的代码封装在一个函数中:

server.php

<?php
function js_output()
{
    return 'hello world';
}
?>

client.php

<?php
header("Content-type: application/x-javascript"); // Or 'text/javascript'
?>
function foo() {
    var i = '<?php include( 'server.php'); echo addslashes( js_output()); ?>';
    console.log( i );
}

注意:您可能还想添加对html_entitieshtmlspecialchars的通话。

答案 1 :(得分:2)

它必须是.php文件。您需要将其设置为client.php中的第一行:

header("Content-type: text/javascript");

然后,您可以像这样创建文件,并将其包含在内,并将其用作常规javascript文件。所以使用<script>标记,因为它现在被识别为JavaScript

答案 2 :(得分:2)

最简单的方法是使用client.php而不是client.js,因为您的服务器将通过PHP解释器自动发送.php文件。从技术上讲,您可以重新配置服务器以将其用于.js文件,但我不推荐它。

在将任何内容输出给用户之前,client.php文件应包含此行:

header("Content-type: text/javascript");

至于基本的index.html / index.php示例:

<html>
<head>
<title>Example</title>
<script type="text/javascript" src="client.php"></script>
</head>
<body>
...
</body>
</html>

更新:示例client.php文件:

<?php
    header("Content-type: text/javascript"); // This bit must come first!
?>
var i = "<?php echo $somevar; ?>" // This is JavaScript code with some PHP embedded.

答案 3 :(得分:2)

要将PHP嵌入到文件中,服务器需要将其传递给PHP解析器,并且只会对已经被告知包含PHP标记的文件类型执行此操作,即.php文件。您可能会告诉服务器也解析js文件,但我不确定是否正确设置了mime-type。它还需要您更改服务器设置。如果你调用javascript文件.php,mime-type肯定会出错。最兼容的方法是将javascript放在html文件中(即你的.php文件)。如果你想将.php文件中的javascript数量保持在最低限度,你可以将变量赋值放在.php文件中,并将其余内容保存在javascript文件中。

server.php:

<script language="javascript">
    var some_var = "<?php echo $SOME_VAR ?>";
</script>

<script src="client.js" type="text/javascript">

client.js:

alert(some_var);

(全局)javascript变量some_var将设置为PHP变量$SOME_VAR设置的任何值。设置字符串值时不要忘记引号。此外,如果PHP代码包含错误,则可能会污染javascript代码,因此在执行此操作时必须小心谨慎。

答案 4 :(得分:1)

我在PHP 5.5上测试了这个解决方案 1.创建一个名为myScript.php的文件。

// myScrpt.php内容:

<?php 
$fname = "Jason";
$lname = "Kent";
?>
  1. 创建一个名为test.php的文件。
  2. // test.php内容:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Include php Script</title>
    
    <script type="text/javascript">
    <?php include 'myScript.php'; ?>
    </script>
    
    </head>
    

    <h1>The result is:</h1>
    <?php
    echo "My full name is $fname $lname.";
    ?>
    
    </body>
    </html> 
    
    1. 当您在浏览器中打开test.php时,您将获得:
    2. 我的全名是Jason Kent。

答案 5 :(得分:0)

您无法让客户端加载PHP。你可以做到这一点的唯一方法就是拥有server.php

<html>
    <head>
          <script type="text/javascript">
          function foo() {
             var i = <?php echo 'hello World'; ?>
              console.log( i );
           }
          </script>
    </head>
    <body>
    </body>
</html>

基本上将javascript加载到页面正文中。或者。或者。

 <html>
    <head>
          <script type="text/javascript">
             var i = <?php echo 'hello World'; ?>
          </script>
          <script type="text/javascript" src="client.js">
    </head>
    <body>
    </body>
</html>

在client.js

function foo() {
   console.log( i );
}

本质上是变量i可以作为页面上的全局变量加载

或者作为另一篇帖子建议,将php文件伪装为js。