我使用cakePhp Form->输入在JQuery中使用
创建一个Dropdown框 $('<?php echo $form->input($r['Attribute']['label'], array('name'=>$r['Attribute']['label'],'options'=>array(1,2,3)));?>').appendTo("#main #EntrySubmit");
但它显示错误为未终止字符串文字...为什么这样???
答案 0 :(得分:5)
如果您的PHP输出任何换行符,我认为您可能遇到问题。例如:
// BAD:
$('<div class="input select"><label for="Gender">
Gender</label>').appendTo(...)
// GOOD:
$('<div class="input select"><label for="Gender">Gender</label>').appendTo(...)
如果是这种情况,请用空格或没有任何内容替换换行符:
// change from this:
$('<?php echo $form->input("blah", ...); ?>').appendTo(...)
// to this:
$('<?php echo str_replace(array("\r\n", "\r", "\n"), "", $form->input("blah", ...)); ?>')
.appendTo(...)
...或者如果你想保留新的线条,你需要用斜线来逃避它们。
// this gives "Unterminated string literal"
var x = 'abc
def';
// this gives you "abcdef"
var x = 'abc\
def';
答案 1 :(得分:-1)
您可能需要使用$form
转义addslashes()
输出中的单引号。
- EDIT2
addcslashesh()
将转义字符\
添加到指定字符。你的JS代码中有单引号,这就是你需要转义php输出中现有单引号的原因。
$("#main #EntrySubmit").append('
<?php
echo addcslashes(
$form->input($r['Attribute']['label'],
array('name'=>$r['Attribute']['label'],
'options'=>array(1,2,3))
),
"'"
);
?>
');
答案 2 :(得分:-1)
颜色编码提供了一个提示。您在单引号内嵌套单引号。用双引号包装你的PHP代码,事情应该改进:
$("<?php echo $form->input($r['Attribute']['label'], array('name'=>$r['Attribute']['label'],'options'=>array(1,2,3)));?>").appendTo("#main #EntrySubmit");
嵌套的单引号不再含糊不清,并且解释正确。