Javascript 在JS中调用php变量
你能告诉我为什么这不起作用吗Javascript 在JS中调用php变量,javascript,php,Javascript,Php,你能告诉我为什么这不起作用吗 <html> <body> <?php $var1 = "hello"; echo $var1; ?> <button type="button" onclick="document.getElementById('demo').innerHTML = <?php echo(json_encode($var1)); ?>;"> HI</button> <p id="demo">
<html>
<body>
<?php
$var1 = "hello";
echo $var1;
?>
<button type="button"
onclick="document.getElementById('demo').innerHTML = <?php echo(json_encode($var1)); ?>;">
HI</button>
<p id="demo"></p>
</body>
</html>
由于$var1
是字符串
,因此需要将其括在引号中
由于$var1
是字符串,而不是数组
或对象
,因此不需要json_encode
在字符串周围使用引号(请参见引号的标记位置):
onclick=“document.getElementById('demo')。innerHTML=''”>
// ^ ^
它是一个字符串。需要在字符串周围正确添加”
onclick="document.getElementById('demo').innerHTML = '<?php echo(json_encode($var1)); ?>';"
onclick=“document.getElementById('demo')。innerHTML=”
尽管有很多答案,我还是会给出我认为OP在想什么的2美分:
基本思想是使用json_encode使hello字符串打印“hello”
,而不是hello
。问题实际上是,这将导致:
onclick="document.getElementById('demo').innerHTML = "hello";"
这是无效的,因为双引号中有双引号
因此,如果愿意,他可以继续使用json_encode
,只要他将双引号更改为单引号:
onclick='document.getElementById("demo").innerHTML = <?php echo json_encode($var1); ?>;'
^ <-- single quote ^----^ <-- double quote here single there too --> ^
您不需要对字符串进行json_编码。只需确保字符串中只有转义引号,并将其包装为单个引号。
onclick='document.getElementById("demo").innerHTML = <?php echo json_encode($var1); ?>;'
^ <-- single quote ^----^ <-- double quote here single there too --> ^
onclick='document.getElementById('demo').innerHTML = "hello";'