我有这个代码,它是从php页面的jquery Data对象中捕获的。
echo "
var $d = $('<div/>', {
id: 'hi' + $('#textResp').children().length,
class: 'eventdiv',
html: 'hello'
}).hide().fadeIn(3000);
$('#textResp').append($d)
";
问题是,没有逃脱。我尝试使用/'来逃避,但它出现了错误。我确信我做错了,有谁知道在哪里放'/而不是'?
答案 0 :(得分:4)
您可以使用php nowdoc而不是引号来简化操作:
echo <<<'DOC'
var $d = $('<div/>', {
id: 'hi' + $('#textResp').children().length,
class: 'eventdiv',
html: 'hello'
}).hide().fadeIn(3000);
$('#textResp').append($d)
DOC;
然后使用你想要的任何内容(引用或引用)。当然,这是未解析的,所以如果$ d实际上指的是php var,那么你就会遇到问题。
答案 1 :(得分:1)
你的撇号实际上看起来很好。但是,在双引号字符串中,PHP将评估以美元符号开头的任何字符串作为变量,而不会产生所需的结果。尝试使用$
替换\$
的jquery相关实例。像这样:
echo "
var \$d = \$('<div/>', {
id: 'hi' + \$('#textResp').children().length,
class: 'eventdiv',
html: 'hello'
}).hide().fadeIn(3000);
\$('#textResp').append(\$d)
";
答案 2 :(得分:1)
在php中使用json_encode
函数,它的行为类似于rails中的escape_javascript
函数。
只需将字符串参数传递给json_encode
函数,然后为您返回转义字符串,请参阅下面的示例代码:
<?php
$form_html = <<HTML
<form action='...' ...>
<input type='...' name='...' ...>
...
</html>
HTML;
?>
var form_html = <?php echo json_encode($form_html); ?>;
$('.remote#create_form').html(form_html).slideDown();
答案 3 :(得分:-1)
您需要在所有\
之前使用'
。
然而,这令人费解,为什么你觉得你需要逃脱角色?看起来你只是回显这个输出,如果它在<script />
标签之间,你应该没问题。
答案 4 :(得分:-1)
PHP将尝试扩展包含在双引号中的字符串中出现的变量$name
。由于$d
看起来像PHP解释器的变量,它将尝试用变量的值替换它。
假设您没有在任何地方定义$d
,那将产生一个空白空间,并且可能会产生通知(如果您使用错误级别E_NOTICE)。
为防止这种情况发生,请使用反斜杠转义美元符号(将$
替换为\$
)
答案 5 :(得分:-1)
使用单引号进行字符串构造。当您专门包含要评估的变量时,仅使用双引号。 PHP正试图评估你在那里的所有$引用。通过使用单引号,您将避免许多转义问题。
echo '
var $d = $("<div/>", {
id: "hi" + $("#textResp").children().length,
class: "eventdiv",
html: "hello"
}).hide().fadeIn(3000);
$("#textResp").append($d)
';