将PHP变量用于JavaScript代码

时间:2013-09-20 14:16:18

标签: javascript php variables

我试图将PHP变量用于我的Javascript代码中的字符串。但是我没有得到预期的结果。

我拒绝使用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;
}

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

7 个答案:

答案 0 :(得分:1)

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

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

例如:

<强>的index.php

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

<强> action.js

alert("Hello " + name );

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

希望能帮到你

答案 1 :(得分:0)

抱歉,你不能用这种方式混合PHP和Javascript。

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

所以PHP不能使用Javascript,反之亦然Javascript在PHP之后行动,而Javascript可以使用PHP。

答案 2 :(得分:0)

好吧,正如其他人所说,你不能把JS和PHP混在一起。这是客户端/服务器架构,两者都是分开的。

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

但是因为你的JS是一个单独的文件。然后它只会在客户端的浏览器加载时执行。(这是你想要的吗?)

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

因此我们有两个案例。

案例1:从PHP中分离JS并将其放在单独的文件中。

script.php示例

<?php

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

    echo $doc;

?>

。 。     action.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标记并将ur js代码放在那里

script.php示例

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

请注意,如果将$ doc放入js字符串中,如果它包含(“,',&gt;,&lt;,\,/),则可能会分解,具体取决于您的html。

方法2:以前方法的组合。将数据分配给JS varibale并从JS文件访问它。通过这种方式,您仍然可以拥有单独的JS文件

script.php示例

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

action.js

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

    }

答案 3 :(得分:0)

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

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

<强>的script.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>

<强> action.js

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

<强>解释

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

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

答案 4 :(得分:0)

只需使用json_encode

var text = <?php echo json_encode($doc); ?>;

答案 5 :(得分:-1)

给这个包括分号的镜头

function get_about() {
    var text;

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

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

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

答案 6 :(得分:-2)

在您的头部中放置此代码:

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

现在您可以在action.js中使用文本的值。