2

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

我们有configfile.phpthejsfile.jsthephpfile.php

configfile.php我们有:

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

jsfile.js我们有:

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

phpfile.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>

...不起作用!解决方案?

4

7 回答 7

5

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

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

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

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

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

于 2012-12-05T23:29:13.200 回答
4

您可以将您的重命名thejsfile.jsthejsfile.php,将以下内容添加到它的最开始,它应该被解析为 PHP:

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

然后像这样引用它:

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

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

于 2012-12-05T23:29:17.153 回答
2

在phpfile.php中,

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

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

于 2012-12-05T23:26:12.647 回答
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 字符。

于 2012-12-05T23:40:03.713 回答
0

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

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

并在 javascript 中(我将使用 jquery)

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

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

于 2012-12-05T23:41:04.490 回答
0

您只能以这种方式将值放入 PHP 处理的文件中。
外部 JavaScript 文件不由 PHP 处理,因此它们按原样链接,无需替换。

于 2012-12-05T23:26:19.123 回答
0
echo "<script type='text/javascript'>var AccomodationInfoForm4 =".$path."</script>";

只需尝试回显上面显示的方式,您就可以在任何地方访问您的变量。因为这将js在您页面上的所有文件中全局可用。

于 2017-08-09T06:05:53.197 回答