首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将PHP变量回显到JavaScript变量中,在HTML语言中打印PHP变量

将PHP变量回显到JavaScript变量中,在HTML语言中打印PHP变量
EN

Stack Overflow用户
提问于 2018-06-24 15:55:18
回答 4查看 57关注 0票数 0

我有一个HTML页面,里面有一个脚本标签,里面有PHP,如下所示:

代码语言:javascript
复制
<div id="myName">
<script type="text/javascript">
   var myName = <?php
   if(isset($_SESSION['name']) && $_SESSION['name'] != ''){
       echo $_SESSION['name'];
   }
   else
       echo "NotSet";
   ?>;
document.write(myName);
</script>
</div>

但运行此命令实际上会输出如下所示:

代码语言:javascript
复制
<div id="myName">
    var myName=SomeName;
    document.write(myName);
</div>

期望值:

代码语言:javascript
复制
<div id="myName">
    SomeName
</div>

在执行inspect元素时:

代码语言:javascript
复制
<div id="myName">
<script type="text/javascript">
    "var myName=SomeName;
    document.write(myName);"
</script>
</div>

我想对变量myName进行后处理,并在JS逻辑中派生出其他值。因此,我需要在JS变量中获取php值。

请注意:我不是在问如何将PHP变量转换为JS变量(对于JS变量,关于Stack Overflow有许多不同的问题)。这是一个不同的问题,因此不是这些问题的重复

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-24 16:21:47

您可以将PHP数据指定为一个JavaSscript变量,如下所示-它将根据需要用于进一步的客户端处理,并且您可以使用标准方法更新DOM以反映内容。

代码语言:javascript
复制
<html>
    <head>
        <title>php & js vars</title>
    </head>
    <body>
    <div id='myName'>
        <script>
            <?php
                printf( 'var myName="%s";', !empty( $_SESSION['name'] ) ? $_SESSION['name'] : 'NotSet' );
            ?>
            document.getElementById('myName').innerHTML=myName;
            alert( myName );// var still available...
        </script>
    </div>
    </body>
</html>

更新

上面的代码片段是匆忙编写的,几乎没有考虑到它可能中断的各种方式,但是为了适应双引号,您可以使用htmlentities

代码语言:javascript
复制
<?php
    session_start();
    $_SESSION['name']='Geronimo"s Revenge';
?>
<html>
    <head>
        <title>php & js vars</title>
    </head>
    <body>
    <div id='myName'>
        <script>
            <?php
                printf( 'var myName="%s";', !empty( $_SESSION['name'] ) ? htmlentities( $_SESSION['name'], ENT_QUOTES   ) : 'NotSet' );
            ?>
            document.getElementById('myName').innerHTML=myName;
        </script>
    </div>
    </body>
</html>
票数 1
EN

Stack Overflow用户

发布于 2018-06-24 16:12:36

如果你的代码是

代码语言:javascript
复制
<div id="myName">
<scrpit type="text/javascript">
   var myName = <?php
   if(isset($_SESSION['name']) && $_SESSION['name'] != ''){
       echo $_SESSION['name'];
   }
   else
       echo "Not Set";
   ?>;
</script>
</div>

那么预期的结果只能是

代码语言:javascript
复制
<div id=" myName">
    <script type="text/javascript">
        var myName = RESULT OF PHP CODE HERE
    </script>
</div>

如果您想要问题中描述的预期输出,请将HTML/php更改为

代码语言:javascript
复制
<div id="myName">
   <?php
   if(isset($_SESSION['name']) && $_SESSION['name'] != ''){
       echo $_SESSION['name'];
   }
   else
       echo "Not Set";
   ?>;
</div>

编辑

在发帖后,我看到了另一个答案的评论。你想在两个地方使用这个变量,所以如果name会话变量没有改变,你必须将php逻辑的结果存储在某个地方,并且/或者如果它可以改变,你必须创建一个函数来获取它。

一个这样的例子

代码语言:javascript
复制
<?php
    function getNameFromSession() {
        if(isset($_SESSION['name']) && $_SESSION['name'] != ''){
            return $_SESSION['name'];
       }
       else
            return "Not Set";
    }

    $myName = getNameFromSession();
?>

<div id=" myName">
    <?php echo $myName; ?>
    <script type="text/javascript">
        var myName = "<?php echo $myName; ?>";
    </script>
</div>

请注意,在任何情况下,您的脚本在元素中可能会更好。

票数 1
EN

Stack Overflow用户

发布于 2018-06-24 16:29:57

代码语言:javascript
复制
<div id="myName">

</div>

<scrpit type="text/javascript">
   <?php
   if(isset($_SESSION['name']) && $_SESSION['name'] != ''){ ?>
       var myName =<?php echo $_SESSION['name'];?> ;
   <?php }
   else{
  ?>
      var myName = "NotSet";
   <?php } ?>;
  document.getElementById("myName").innerHTML=myName ;

document.write(myName);
</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51007978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档