-2

我正在尝试使用 cakephp 2.3.7 创建一个自动完成文件。有很多教程,但大多数都是针对 1.3 左右的。

我找到了一些像这样的蛋糕 2.X ( http://hitechcyberabad.blogspot.com.es/2013/02/autocomplete-in-cakephp-22x-using-jquery.html ),但它们都不起作用为了我。

我不得不编辑教程的 cities_dropdown.ctp 的代码:

<div class="contacts search form">
<fieldset>
<legend></legend>
    <?php //paginator->options(array('url' => $this->passedArgs));
    $this->Form->create('Contact', array('type'=>'post','action' => 'find'));

    echo $this->Form->input('city', array(
        'empty' => 'Pick a city',
        'label' => 'City',
        'option'=> $cities,
        'id' => 'city',
        'autocomplete' => 'on'));
    echo $this->Form->end(__('Search'));
    ?>
   </fieldset>

</div>
<script>
$( "#city" ).autocomplete({
  source: "/cake/contacts/find",
  minLength: 2,
  delay: 2
});
</script>

其余代码与教程中的一样。

我没有收到任何错误消息,它根本不起作用,我不知道为什么。

4

2 回答 2

3

你调试过ajax调用的响应吗?使用 chrome 或 Firebug for Firefox 的调试工具来调试请求或使用http://www.charlesproxy.com/进行调试。

我很确定您的 json 响应不正确并且可能包含错误。此外,您链接的教程没有显示在 CakePHP 中处理 json 的最佳方法,请参阅手册的这一页。调试您的回复并用它更新您的问题。

于 2013-07-08T10:37:00.560 回答
2

简单的自动完成代码

city.ctp 代码

<? echo $this->Html->css('jquery-ui');
   echo $this->Html->script('jquery-1.10.2');
   echo $this->Html->script('jquery-ui');
   echo $this->Html->css('style.css');
 ?>
 <script>
  $(function() {
    var availableTags = [<?=$cities?>];
    $( "#city_from" ).autocomplete({
      source: availableTags
    });
  });
  </script>

<?php echo $this->Form->input("city_from", array('required'=>'true',  'class'=>'form-control', 'id'=>'city_from', 'placeholder'=>'City or airport', 'label'=>'<span class="opensans size13">Flying from</span>'));?>

控制器代码

       //Airport cities string section starts
        $this->loadModel('AirportCity');
        $cities=$this->AirportCity->find('list',array('fields'=>'AirportCity.city_name'));
        $strCities='"'.implode('","',$cities).'"';
        $this->set('cities',$strCities);
        //Airport cities string section ends

如需更多帮助,请参阅http://jqueryui.com/autocomplete/

于 2015-06-06T10:46:53.627 回答