将PHP变量回显到JavaScript变量中会以HTML格式打印PHP变量
我有一个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
<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>