jQuery UI:“未捕获的语法错误:意外的令牌<”在一个环境中,而不是另一个

时间:2017-04-05 14:29:22

标签: javascript jquery cakephp

我有一个非常简单的自动完成功能附加到CakePHP表单上的一个字段。这是jQuery:

<script>
$(function() {
   var availableTags = [<?=$suppliers?>];
   $( "#MsrSupplier" ).autocomplete({
   source: availableTags
  });
});
</script>

以下是我的控制器中的代码,它从数据库中提取下拉值。

//Dropdown suggestions for autocompleting the Suppliers field
$suppliers=$this->Msr->find('list',array('fields'=>'Msr.supplier'));
$strSuppliers='"'.implode('","',$suppliers).'"';
$this->set('suppliers',$strSuppliers);

我的edit.ctp中的字段代码:

<?php echo $this->Form->input('supplier', array('type'=>'textbox', 'div'=>false, 
          'name'=>'supplier', 'id'=>'MsrSupplier')); ?>

这在我的开发环境中工作正常,这只是在Mac OS X上运行的XAMPP的本地安装。当我开始在字段中输入单词时,我会收到自动填充建议,完成CSS格式化。但是,当我将其推送到我的生产服务器时,在检查字段时出现以下错误:

Uncaught SyntaxError: Unexpected token <

错误指向我的jQuery代码中的这一行:

var availableTags = [<?=$suppliers?>];

所以,我看到了问题,但我不知道为什么这是一个问题或该怎么做。 XAMPP中的Apache版本是2.4.16。我的服务器上的版本是在CentOS 5上运行的2.2.3-92。两个环境都运行CakePHP版本2.0.5,默认布局(指向我的jQuery版本)是相同的。

1 个答案:

答案 0 :(得分:2)

  

echo 也有一个快捷语法,您可以使用等号立即跟随开始标记。在PHP 5.4.0之前,这个简短的语法仅适用于启用short_open_tag配置设置。

<强> http://php.net/manual/en/function.echo.php

您的服务器可能已禁用该选项,因此它按原样输出,即<?=$suppliers?>,而不是被解释为PHP。

PS。通常我在将数据从PHP传递给JS时使用json_encode,即不要在控制器中构建逗号分隔的引用字符串,而是将查询/结果按原样传递给视图,然后只做:

var availableTags = <?php echo json_encode($suppliers) ?>; // or <?= when applicable