Javascript 对内部html的document.getElementById调用适用于$\u POST和$\u GET变量,但不适用于普通php变量

Javascript 对内部html的document.getElementById调用适用于$\u POST和$\u GET变量,但不适用于普通php变量,javascript,php,Javascript,Php,我很困惑。我可以将$\u GET或$\u POST数组中的变量放入元素的innerHTML中,但无法将普通php变量中的文本放入。这是我的密码: $msg = "We don't recognize that password. Please try again."; echo "<script>document.getElementById('alert').innerHTML='".$msg."';</script>"; //echo "<script>d

我很困惑。我可以将$\u GET或$\u POST数组中的变量放入元素的innerHTML中,但无法将普通php变量中的文本放入。这是我的密码:

$msg = "We don't recognize that password. Please try again.";
echo "<script>document.getElementById('alert').innerHTML='".$msg."';</script>";
//echo "<script>document.getElementById('alert').innerHTML='".$_POST['email']."';</script>";
$msg=“我们无法识别该密码。请重试。”;
echo“document.getElementById('alert').innerHTML='”$msg.“;”;
//echo“document.getElementById('alert').innerHTML=”$_POST['email']。“;”;
注释掉的行很好用,但是使用$msg的行不行。我也尝试过,但没有成功,所以在纯文本中替换也不起作用

echo "<script>document.getElementById('alert').innerHTML='hello';</script>";
echo“document.getElementById('alert').innerHTML='hello';”;
还有什么我可以试试的吗?我想在屏幕上打印除$\u POST或$\u GET变量以外的内容


谢谢。

这是一条信息,它包含一个单独的引语,打断了它

$msg = "We don't ...."
//            ^ here
你最终得到的是

document.getElementById('alert').innerHTML= 'We don't ...';
要么退出,要么移除,要么更换

将PHP值转换为Javascript时使用
json\u encode()
。它将确保正确引用和转义该值。它还允许您将更多数组传输到JS(JSON是对象和数组的Javascript文字符号的子集)

echo“document.getElementById('alert').innerHTML=“.json_encode($msg)。”;

因为这会引用值,所以您不需要在作业的JS部分包含引号。

@Barmer感谢您的提示。我确实尝试过json_encode,但我在js中使用了单引号,这一定是它不起作用的原因。我将来会记住这一点。
echo "<script>document.getElementById('alert').innerHTML=".json_encode($msg).";</script>";