我知道堆栈溢出还有其他类似的问题,但似乎没有一个能解决我的问题。每个浏览器都会出现此错误(尽管我使用了webkit错误名称)。
我需要使用PHP添加javascript。这会导致出现错误“Unexpected token illegal”。我试了answer没有成功。这就是我现在所拥有的:
$texte .="<script>";
$texte .="$(function(){";
$texte .="$('#field_".$this->id."').css('position','absolute').css('left','".$this->x."px').css('top','".$this->y."px');";
$texte .="$('#field_".$this->id."').draggable({stop:function(event,ui){saveFieldPosition(".$this->id.");},grid:[10,10],containment:\".work_plane:first\"}).resizable({grid:[10,10]});";
$texte .="});";
$texte .="</script>";
return $texte;
我启用了Dreamweaver隐藏的字符并删除了每个将在$ texte值中的字符。
有人看到了这个问题吗?任何提示都将不胜感激。
编辑:$ texte在添加之前通过htmlentities()传递。
这是输出:
<script>$(function(){$('#field_1').css('position','absolute').css('left','px').css('top','px');$('#field_').draggable({stop:function(event,ui){saveFieldPosition();},grid:[10,10],containment:".work_plane:first"}).resizable({grid:[10,10]});});</script>
答案 0 :(得分:2)
您不需要像这样分开您的字符串。此外,您可以使用HEREDOC
$texte .= <<<JAVASCRIPT
<script language="javascript">
$(function() {
$('#field_{$this->id}').css('position','absolute').css('left','{this->x}px').css('top','{$this->y}px');
$('#field_{$this->id}').draggable({
stop:function(event,ui){
saveFieldPosition({$this->id});
},
grid:[10,10],
containment: ".work_plane:first"
}).resizable({
grid:[10,10]
});
});
</script>
JAVASCRIPT;
答案 1 :(得分:1)
<强> EDITED 强>
收容后的“”应该是单引号''没有转义 -
$texte .="$('#field_".$this->id."').draggable({stop:function(event,ui){saveFieldPosition(".$this->id.");},grid:[10,10],containment:'.work_plane:first'}).resizable({grid:[10,10]});";
这保留了PHP
的语法正确的JS输出你有双引号“开始行。你可以在内部使用单引号,而不必逃避它们。
"foo:'bar'"
与
相同"foo:\"bar\""