我正在像这样使用PHP回显一个JavaScript块...
echo "<script language='javascript' type='text/javascript'>
jQuery(document).ready(function($){
var $lg = $('#mydiv');
});
";
但是我收到以下错误消息...
Notice: Undefined variable: lg
当我检查源代码时,定义$ lg的行如下所示……
var = $('#mydiv');
任何想法为什么会发生? $是否需要转义?
答案 0 :(得分:5)
在PHP中使用双引号时,变量将插在字符串内,例如:
$name = "Elias";
echo "My name is $name";
这将打印My name is Elias
。
如果要在字符串中使用$
,则必须对其进行转义或使用单引号:
$name = "Elias";
echo "I love the variable \$name";
echo 'I love the variable $name';
两个回声都将打印I love the variable $name
此外,由于使用了双引号,因此您在字符串中的html上使用了单引号。 这是无效的HTML,尽管浏览器可以正确地对其进行解析。(实际上是有效的,抱歉)
正确的方法是对字符串使用单引号或转义双引号:
echo "<script language=\"javascript\" type=\"text/javascript\">";
// or
echo '<script language="javascript" type="text/javascript">';
答案 1 :(得分:0)
是的,的确,当您在PHP中回显“-”分隔的字符串时,所有以$
开头的内容都被解释为变量。
您需要像这样对字符串进行转义:
echo "<script language='javascript' type='text/javascript'>
jQuery(document).ready(function(\$){
var \$lg = \$('#mydiv');
});";
为了安全起见,应转义字符串中的所有$
。
答案 2 :(得分:0)
当使用双引号php插值变量时,因此它试图求lldb
的值,这就是为什么它没有显示在输出中。
如果在回显上更改为单引号,则应该可以使用。
或者在双引号字符串上用反斜杠($lg
)来转义$
。