我有一个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>
在执行inspect元素时:
<div id="myName">
<script type="text/javascript">
"var myName=SomeName;
document.write(myName);"
</script>
</div>
我想对变量myName进行后处理,并在JS逻辑中派生出其他值。因此,我需要在JS变量中获取php值。
请注意:我不是在问如何将PHP变量转换为JS变量(对于JS变量,关于Stack Overflow有许多不同的问题)。这是一个不同的问题,因此不是这些问题的重复。
发布于 2018-06-24 16:21:47
您可以将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>
发布于 2018-06-24 16:12:36
如果你的代码是
<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
会话变量没有改变,你必须将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>
请注意,在任何情况下,您的脚本在元素中可能会更好。
发布于 2018-06-24 16:29:57
<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>
https://stackoverflow.com/questions/51007978
复制相似问题