1

我正在尝试在我的 Javascript 代码中使用 PHP 变量作为字符串。但是我没有得到预期的结果。

我拒绝使用 JQuery,我更喜欢使用纯 Javascript,即使它需要更多的工作。

这是我的 PHP 文件:script.php

<?php

    $filename = "./about.txt";
    $doc = file_get_contents($filename);

    echo $doc;

?>

它在我的 PHP 中运行良好。

我在我的 action.js 文件上试过这个:

function get_about() {

    var text = "<?php echo $doc ?>";

    document.getElementById("div2").innerHTML = text;
}

我将不胜感激任何帮助。我是网络编程的新手。我做了一个研究,但它没有帮助。

4

7 回答 7

1

您不能在 Javascript 文件中使用 PHP 变量,因为 PHP 在服务器上工作,而 JS 在客户端工作。

您可以做的是在 PHP 文件上生成 javascrit 代码并在 javascript 文件上使用此代码。

前任:

索引.php

<?php
    $nameUser = "Marc";
    ...
    ...
    echo '<script type="text/javascript">';
        echo "var name = $nameUser;";
    echo '</script>';
    echo '<script type="text/javascript" src="/action.js" />'
?>

动作.js

alert("Hello " + name );

这不是最漂亮的方法,但想法就在那里。

希望对你有帮助

于 2013-10-24T07:05:45.117 回答
0

抱歉,你不能那样混合 PHP 和 Javascript。

  • 服务器上的 PHP 使用 javascript 生成一个 HTML 页面,
  • 然后浏览器读取页面并运行 JAVASCRIPT。

所以 PHP 不能使用 Javascript,反之 Javascript 在 PHP 之后起作用,而 Javascript 可以使用 PHP。

于 2013-10-22T09:02:54.700 回答
0

我知道这是一个 3 个月大的问题,但我遇到了它并认为我可以提供一些有用的东西。

如果您想将此变量传递给 JS 脚本,则以下代码将起作用:

脚本.php

<?php
  $filename = "./about.txt";
  $doc = file_get_contents($filename);
  echo $doc;
?>
<script type="text/javascript">
  var text = "<?php echo $doc ?>";
</script>
<script src="action.js"></script>

动作.js

function get_about() {
  document.getElementById("div2").innerHTML = text;
}

解释

大多数具有标准配置的服务器不处理.js文件,就此而言,任何非.php文件都以与文件相同的方式.php处理。除非您设置了一些自定义配置,否则您不能将<?php PHP code here ?>. script.js因此,在您提供的代码中, javascript 变量的值text等于 string "<?php echo $doc ?>"

幸运的是,使用脚本的唯一方法不是使用外部脚本,但您可以使用带有<script>标签的内联脚本。PHP 解释器将遍历.php文件中的任何代码并查找它们<?php ?>- 然后解释它们,这就是php文件中的内联脚本以它们的方式工作的原因。

于 2014-01-03T03:24:20.747 回答
0

只需使用json_encode

var text = <?php echo json_encode($doc); ?>;
于 2014-01-03T03:48:16.130 回答
0

好吧,正如其他人所说,您不能将 JS 与 PHP 混合使用。这是两者分开的客户端/服务器架构。

我不知道你的情况,但如果你是从 php 打印 JS(意味着来自同一个 .php 页面),那么你的方法可能会根据你的需要起作用。

但是由于您的 JS 在单独的文件中。然后它只有在客户端的浏览器加载时才会执行。(这是你想要的吗?)

一旦代码在客户端浏览器上,它就无法看到服务器上的内容。从服务器获取一些数据的唯一方法是通过 AJAX 请求发起请求以提取数据(我想还有其他方法,但我将自己限制在您的情况下)。

因此我们有两种情况。

案例 1:将 JS 与 PHP 分开,放在一个单独的文件中。

示例 script.php

<?php

    $filename = "./about.txt";
    $doc = file_get_contents($filename);

    echo $doc;

?>

. . 动作.js

 //using pure js ajax request 
    function get_about() {

   var ajaxRequest;
    try {
        ajaxRequest = new XMLHttpRequest();
    } catch (e) {
        try {
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
                alert("Connection lost. Please try again.");
                return false;
            }
        }
    }
    ajaxRequest.onreadystatechange = function() {
        if (ajaxRequest.readyState == 4) {
             document.getElementById("div2").innerHTML = ajaxRequest.responseText;
        }
    }    
    ajaxRequest.open("GET", "script.php");
    ajaxRequest.send(null);                            
    }

案例 2:JS 和 PHP 位于同一个文件中,意味着 JS 将与 PHP 代码一起打印并一起发送到客户端的浏览器。

方法1:打开javascript标签并将你的js代码放在那里

示例 script.php

<?php
    $filename = "./about.txt";
    $doc = file_get_contents($filename);
    echo "<script>
           function get_about() { 
              document.getElementById("div2").innerHTML = '{$doc}'
            }
          </script>";        
?>

请注意,如果 $doc 包含 (",',>,<,\,/) 取决于您的 html,则将 $doc 放入 js 字符串可能会损坏。

方法2:结合前面的方法。将数据分配给 JS 变量并从 JS 文件中访问它。这样你仍然可以拥有单独的 JS 文件

示例 script.php

<?php
    $filename = "./about.txt";
    $doc = file_get_contents($filename);
    echo "<script>
           var doc = '{$doc}'//global variable
          </script>";        
?>

动作.js

 //using pure js ajax request 
    function get_about() {
      document.getElementById("div2").innerHTML = doc ;

    }
于 2013-12-10T04:14:31.290 回答
-1

试一试,包括分号

function get_about() {
    var text;

    text = "<?php echo $doc; ?>";

    document.getElementById("div2").innerHTML = text;
}

这里的工作示例 http://ideone.com/FLduOl

于 2013-09-20T14:20:09.350 回答
-2

在您的头部部分中放置以下代码:

<script type="text/javascript">
    var text = "<?php echo $doc ?>";
</script>
<script type="text/javascript" src="/action.js" />

现在你可以在你的 action.js 中使用 text 的值了。

于 2013-09-20T14:20:47.717 回答