Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP变量回显到JavaScript变量中会以HTML格式打印PHP变量_Javascript_Php_Html - Fatal编程技术网

将PHP变量回显到JavaScript变量中会以HTML格式打印PHP变量

将PHP变量回显到JavaScript变量中会以HTML格式打印PHP变量,javascript,php,html,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 "Not

我有一个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>

var myName=;
文件。写(我的名字);
但运行此命令实际上会打印如下所示:

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

var myName=SomeName;
文件。写(我的名字);
预期:

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

名字
检查元件时:

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

“var myName=SomeName;
文件。写下(我的名字);”
我想对变量myName进行后期处理,并在JS逻辑中提前派生其他值。所以,我需要在JS变量中获取php值

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

为什么不直接使用这个

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

;
为什么不直接使用这个

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

;
如果您的代码是

<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>
请注意,在任何情况下,您的脚本在元素中可能会更好。

如果您的代码是

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

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

您可以像这样将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>

您可以像这样将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>

var myName=;
var myName=“NotSet”;
;
document.getElementById(“myName”).innerHTML=myName;
文件。写(我的名字);

var myName=;
var myName=“NotSet”;
;
document.getElementById(“myName”).innerHTML=myName;
文件。写(我的名字);


字符串周围需要加引号,否则javascript将抛出错误。但真正的问题是什么?顺便说一句,如果您抱怨缺少引号,只需使用
echo json_encode($\u SESSION['name'])
如果您只想输入
$\u SESSION['name']的值,为什么要使用JavaScript
中的code>?预期的输出永远不会发生。为什么使用javascript???@RamRaider,Philipp要澄清您的疑问,请查看编辑后的问题。我已经添加了预期和观察到的输出。您需要在字符串周围加引号,否则javascript将抛出错误。但真正的问题是什么?顺便说一句,如果您抱怨缺少引号,只需使用
echo json_encode($\u SESSION['name'])
如果您只想输入
$\u SESSION['name']的值,为什么要使用JavaScript
中的code>?预期的输出永远不会发生。为什么使用javascript???@RamRaider,Philipp要澄清您的疑问,请查看编辑后的问题。我已经添加了预期的和观察到的输出。我想使用js变量来实现一些进一步的逻辑。然后需要回显它两次—一次在
标记内(不是在
内),一次在
内。如果您的代码中有
var myName
,就像您的示例中一样,它将出现在HTMLI中。我想使用js变量进行一些进一步的逻辑。然后您需要重复它两次-一次在
标记内(不是在
内),一次在
内。如果您的代码中有
var myName
,就像您的示例中一样,它将出现在HTMLW中,您所说的预期输出实际上是预期的,但不是实际的。它实际上还打印整个“var myName=SomeName”。。和HTML页面上的“var myName”一起。您的问题在我的编辑过程中发生了更改。您需要以某种方式存储名称会话属性的值。然后,您可以根据需要在HTML中的任何位置回显它,前提是如果您将它分配给JavaScript变量,它被正确引用和转义。您所说的预期输出实际上是预期的,但不是实际的。它实际上还打印整个“var myName=SomeName”。。和HTML页面上的“var myName”一起。您的问题在我的编辑过程中发生了更改。您需要以某种方式存储名称会话属性的值。然后,您可以根据需要在HTML中的任何位置对其进行回显,前提是如果您将其分配给JavaScript变量,它将被正确引用和转义。如果名称包含
?如果我的名字以反斜杠结尾怎么办?将变量传递给javascript的安全方法是
json\u encode
,而不是
htmlentities
——你总是会错过一些特殊情况,如果名字包含
?如果我的名字以反斜杠结尾怎么办?将变量传递给javascript的安全方法是
json\u encode
,而不是
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>
<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>