在cakephp中使用jquery autocomplete会发现404未找到错误

时间:2014-12-14 08:42:26

标签: jquery json cakephp autocomplete

我想使用jquery在cakephp 2.5.6中实现自动完成搜索,但是当我在搜索中输入单词时,它返回错误404找不到。我认为它无法进入我的数据库。请给出一些help.Thanks提前。 这是我的控制器名为users

 class UsersController extends AppController{
 var $helpers = array('Bootstrap');
 var $name = 'Users';
 var $components = array('RequestHandler');
 public function home(){}
 public function find() {  
 $this->User->recursive = -1;
 if ($this->RequestHandler->isAjax()) {
 Configure::write ( 'debug', 0 );
 $this->autoRender = false;
 $this->layout = 'ajax';
  $results = $this->User->find('all', array('fields' => array('User.username'),
      'conditions' => array('User.username LIKE ' => '%'.$this->request->query['term'] . '%'),
      'group' => array('User.username'),
   ));
   $i=0;
        foreach($results as $result){
                $response[$i]['value']=$result['User']['id'];
                $response[$i]['label']=$result['User']['username'];
        $i++;
        }
echo json_encode($response);
 console.log($response);}}
}

我的观点是:

 <fieldset>
 <legend></legend>
 <?php echo $this->Form->create('User', array('type'=>'post','action' => 'find'));

    echo $this->Form->input('username', array(
        'type' => 'text',
        'empty' => 'Pick a username',
        'label' => 'username',
       // 'option'=> $users,
        'id' => 'username',
        'autocomplete' => 'on'));

         echo $this->Form->submit('submit',array(
                          'class' => 'btn btn-primary',
                          'div' => false));
           ?>
      </fieldset>
      </div>
      <script>
  $(document).ready(function(){
 var username = $('#username');
 username.defaultText('Search for people');
  // Using jQuery UI’s autocomplete widget:
  username.autocomplete({
      minLength    : 1,
           source: '/cakephp/livesearch/users/find.json'
      });
       });
    // A custom jQuery method for placeholder text:
      $.fn.defaultText = function(value){
     var element = this.eq(0); 
      element.data('defaultText',value);
     element.focus(function(){
      if(element.val() == value){
     element.val('').removeClass('defaultText');
          }
      }).blur(function(){
       if(element.val() == '' || element.val() == value){
       element.addClass('defaultText').val(value);
     }
      });
     return element.blur();
        }
       </script>

我认为脚本中存在一个问题,我在寻找找到函数的路径。它不是在查询数据库。 错误如下:

    GET http://localhost/cakephp/livesearch/users/find.json?term=s 404 (Not Found). 

我期待着一些帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

尝试替换它:

source: '/cakephp/livesearch/users/find.json'

为此:

source:'<?php echo $this->Html->url(array("controller" => "users","action"=> "find")); ?>'

我遇到了同样的错误404问题。它对我有用。

答案 1 :(得分:0)

您在控制器中使用find方法作为视图。 这是可能的,但你需要正确地做到这一点。 现在,cakephp无法解析您的请求路线。

查看http://book.cakephp.org/2.0/en/views/json-and-xml-views.html#

到目前为止我能看到的2个问题你需要解决:Router :: parseExtensions()和$ this-&gt; set(&#39; _serialize&#39; ...