[英]Echoing PHP variable into JavaScript variable prints the PHP variable in 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的问题很多)。 这是一个不同的问题,因此不是这些问题的重复 。
如果您的代码是
<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">
<script type="text/javascript">
var myName = RESULT OF PHP CODE HERE
</script>
</div>
如果您要按问题所述获得预期的输出,请将HTML / php更改为
<div id="myName">
<?php
if(isset($_SESSION['name']) && $_SESSION['name'] != ''){
echo $_SESSION['name'];
}
else
echo "Not Set";
?>;
</div>
编辑
发布后,我看到了另一个答案的评论。 您想在两个地方使用该变量,因此,如果name
session变量不变,则必须将php逻辑的结果存储在某个地方;和/或如果函数可以更改,则使该函数获取它。
举一个这样的例子
<?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>
请注意,无论如何,您的脚本在元素中可能会更好。
您可以像这样将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>
<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>
为什么不只使用它呢?
<div id="myName">
<?php
if(isset($_SESSION['name']) && $_SESSION['name'] != ''){
echo $_SESSION['name'];
}
else
echo "NotSet";
?>;
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.