意外的令牌非法


Unexpected token Illegal

我知道还有其他类似的问题与堆栈溢出有关,但似乎没有一个能纠正我的问题。这个错误发生在每个浏览器上(尽管我使用了webkit错误名称)。

我需要使用PHP添加javascript。这会导致出现错误"意外的令牌非法"。我尝试了这个答案,但没有成功。这就是我现在拥有的:

    $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在添加之前通过htmlenties()传递。

这是输出:

    &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;

您不需要像那样分离字符串。此外,您可以使用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;

已编辑

包含后的"应该是单引号",没有转义符-

$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'""