意外的令牌非法

时间:2012-07-31 19:06:28

标签: php javascript jquery

我知道堆栈溢出还有其他类似的问题,但似乎没有一个能解决我的问题。每个浏览器都会出现此错误(尽管我使用了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()传递。

这是输出:

    &lt;script&gt;$(function(){$('#field_1').css('position','absolute').css('left','px').css('top','px');$('#field_').draggable({stop:function(event,ui){saveFieldPosition();},grid:[10,10],containment:&quot;.work_plane:first&quot;}).resizable({grid:[10,10]});});&lt;/script&gt;

2 个答案:

答案 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\""