将PHP变量回显到JavaScript变量中将以HTML格式显示PHP变量

时间:2018-06-24 07:55:18

标签: javascript php html

我有一个HTML页面,其中带有一个带有PHP的脚本标签,如下所示:

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

但是运行此命令实际上会显示如下:

<div id="myName">
    var myName=SomeName;
    document.write(myName);
</div>

预期:

<div id="myName">
    SomeName
</div>

关于检查元素:

<div id="myName">
<script type="text/javascript">
    "var myName=SomeName;
    document.write(myName);"
</script>
</div>

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

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

4 个答案:

答案 0 :(得分:1)

如果您的代码是

>> rand_matrix = randi([0,25],N,L)

rand_matrix =

    16     5     8    15     2    25     0     2     0     4     1    17     4     7    24     7     0    16     6    23
     9     7    24     6     6    14    23    16    19     6    17    13    10    11    23    18    14     9     7    22
    21    12    11    15    20    13    23    12    13    23     1    25    21     0     1    17    22     4    16    21
    13     5     4    18     0     6    20    20    12     0     1    16    20    25    19    14    17    11     6     6
     9    21    23     5    24    12     2    18    23    12    13    20     1     4     6    18     4    12    21    15
    24     5    25     3    18    16     6    23    15     4     2    11    10     2    10    17     9     3    25     0
    22     5    11     7    12    17     8    23    16    25    21    11    13     9    14     4    11    15    18    11
    14     4     2     8    15    10    17     8    22    18    21    21    10     5    24     3    25     5     8     8
    16     5     6    11     6     9     3    18    20    13    18     2    17    12    10    25     4    10    15     4
    15    11    10    13    11    25    18     5    14    12     3     3    16     8    25     4    22    15     2     4

>> sort_rand_matrix = sort(rand_matrix,2)

sort_rand_matrix =

     0     0     0     1     2     2     4     4     5     6     7     7     8    15    16    16    17    23    24    25
     6     6     6     7     7     9     9    10    11    13    14    14    16    17    18    19    22    23    23    24
     0     1     1     4    11    12    12    13    13    15    16    17    20    21    21    21    22    23    23    25
     0     0     1     4     5     6     6     6    11    12    13    14    16    17    18    19    20    20    20    25
     1     2     4     4     5     6     9    12    12    12    13    15    18    18    20    21    21    23    23    24
     0     2     2     3     3     4     5     6     9    10    10    11    15    16    17    18    23    24    25    25
     4     5     7     8     9    11    11    11    11    12    13    14    15    16    17    18    21    22    23    25
     2     3     4     5     5     8     8     8     8    10    10    14    15    17    18    21    21    22    24    25
     2     3     4     4     5     6     6     9    10    10    11    12    13    15    16    17    18    18    20    25
     2     3     3     4     4     5     8    10    11    11    12    13    14    15    15    16    18    22    25    25

>> for i = 1:L
  TF = sort_rand_matrix(:,i) == max(sort_rand_matrix(:,i));
  if length(TF) == 1
    break
  end
  sort_rand_matrix(not(TF),:) = [];
end
>> sort_rand_matrix

sort_rand_matrix =

     6     6     6     7     7     9     9    10    11    13    14    14    16    17    18    19    22    23    23    24

那么预期的结果只能是

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

如果您希望获得问题所描述的预期输出,请将HTML / php更改为

<div id=" myName">
    <script type="text/javascript">
        var myName = RESULT OF PHP CODE HERE
    </script>
</div>

编辑

发布后,我看到了另一个答案的评论。您想在两个地方使用该变量,因此,如果<div id="myName"> <?php if(isset($_SESSION['name']) && $_SESSION['name'] != ''){ echo $_SESSION['name']; } else echo "Not Set"; ?>; </div> 会话变量不变,则必须将php逻辑的结果存储在某个地方,并且/或者如果函数可以改变,则使该函数获取它。

例如一个例子

name

请注意,无论如何,您的脚本在元素中可能会更好。

答案 1 :(得分:1)

您可以像这样将PHP数据分配为JavaSscript变量-根据需要将其用于进一步的客户端处理,并且可以使用标准方法更新DOM以反映内容。

<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

<?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>

答案 2 :(得分:1)

<Content contentContainerStyle={{ backgroundColor: "#FF0000" }}>

答案 3 :(得分:0)

为什么不只使用这个?

<div id="myName">
   <?php
   if(isset($_SESSION['name']) && $_SESSION['name'] != ''){
       echo $_SESSION['name'];
   }
   else
       echo "NotSet";
   ?>;
</div>