我有一个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的问题很多)。这是一个不同的问题,因此对于这些问题不是重复的。
答案 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>