如何使用PHP echo函数在JavaScript中定义变量?

时间:2012-12-05 23:21:11

标签: php javascript html html5

如何在外部php文件中使用echo函数在javascript中定义变量?

我们有 theconfigfile.php thejsfile.js thephpfile.php

theconfigfile.php 中,我们有:

<?php
$path = 'http://example.com/home.php'; // Set your path
?>

thejsfile.js 中,我们有:

... 
if (confirm("Are you sure you want to delete")) {
        $.ajax({
            type: "POST",
            url: "http://example.com/home.php",
            data: dataString,
            cache: false
        });
...

thephpfile.php 中,我们有:

    <php 
    include "theconfigfile.php";
    ?>

    <html>
    <head>
    <script type="text/javascript" src="thejsfile.js"></script>
    </head>

<body>
...here is the code that uses file thejsfile.js...
</body>
</html>

我使用了这种方法:

... 
if (confirm("Are you sure you want to delete")) {
        $.ajax({
            type: "POST",
            url: "<?php echo $path; ?>",
            data: dataString,
            cache: false
        });
...

仅当javascript是代码的一部分时才有效。如果我在外面使用它,就像这样...

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

......不起作用!溶液

7 个答案:

答案 0 :(得分:5)

有几种方法可以做到这一点。

您可以将您的网络服务器配置为使用PHP处理扩展名为.js的文件,然后将PHP注入其中。当然,这意味着你需要一种方法来实际计算你的变量,这会减慢你提供常规javascript内容的速度。

您可以简单地将PHP变量输出到<script>元素中的Javascript变量,如此

<script type="text/javascript">
var path = "<?php echo $path; ?>";
</script>

然后在AJAX中访问此path变量。大多数人可能会使用第二种方法。

答案 1 :(得分:4)

您可以将thejsfile.js重命名为thejsfile.php,将以下内容添加到非常开头中,并且应该针对PHP进行解析:

<?php header("Content-type: text/javascript"); ?>

然后像这样引用它:

<head>
<script type="text/javascript" src="thejsfile.php"></script>
</head>

您的另一个选择是将服务器设置为解析PHP的.js个文件。

答案 2 :(得分:2)

在thephpfile.php中,

<html>
<head>
<script type="text/javascript">
    var config = { url: '<?= $path; ?>' };
</script>
<script type="text/javascript" src="thejsfile.js"></script>
</head>

然后你可以在你的javascript中使用config.url访问它。

答案 3 :(得分:0)

您只能以这种方式将值放入PHP处理的文件中。
外部JavaScript文件不由PHP处理,因此它们按原样链接而没有附加。

答案 4 :(得分:0)

除非您通过JSONP向另一台服务器发帖,否则您可能只考虑在Javascript中使用硬编码的相对路径,这样您就不需要将路径从服务器发送到客户端了:

...
    $.ajax({
        type: "POST",
        url: "home.php",
        data: dataString,
        cache: false
    });
....

但是,如果这是一个经常更改的URL并且它确实需要可配置,那么您可以将PHP变量作为脚本回显“

<html>
...
<script src="thejsfile.js" type="text/javascript">
<script type="text/javascript">
    // 'path' is a variable that is defined in thejsfile.js
    path = '<?php echo htmlentities($path)  ?>';
</script>

...

每当您从服务器向客户端输出信息时(特别是作为Javascript),您必须非常小心它被转义以防止脚本攻击(即允许人们将JavaScript注入您的代码)。在这种情况下,没有理由允许任何类型的html字符。

答案 5 :(得分:0)

使用外部JS文件时您可以将值存储在隐藏字段中,并使用JavaScript检索字段值。

<input type="hidden" name="path" id="path" value="<?php echo $path; ?>" />

并在javascript(我将使用jquery)

var path = $('#path').attr('value');

显然,您可以将变量写入页面上的脚本标记,但如果使用任何高级类型的模式,则可能很难访问该变量。

答案 6 :(得分:0)

echo "<script type='text/javascript'>var AccomodationInfoForm4 =".$path."</script>";

尝试回应上面显示的方式,您可以随时随地访问您的变量。因为这将全局提供给您网页上的所有js文件。