2012-04-09 74 views
0

我想使用jquery自动完成库自动完成部门。 Ajax调用如下CakePhp发送响应为Json并显示它

 $("#auto_complete").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "/employees/getDepartment" 
       dataType: "jsonp", 
       //dataType: "text/html", 
       data: { 
        featureClass: "P", 
        style: "full", 
        maxRows: 12, 
        name_startsWith: request.term 
       }, 
       success: function(data) { 
        alert("success--"); 
        response($.map(data.geonames, function(item) { 
         return { 
          label: item.name, 
          value: item.id 
         } 
        })); 
       } 
      }); 
     }, 
     minLength: 2, 
     select: function(event, ui) { 
      log(ui.item ? 
       "Selected: " + ui.item.label : 
       "Nothing selected, input was " + this.value); 
     }, 
     open: function() { 
      $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); 
     }, 
     close: function() { 
      $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); 
     } 
    }); 

我的控制器有一个名为getDepartment操作如下:

 public function getDepartment() { 
     $this->log($this->params->query['name_startsWith'] , 'debug'); 
     $str = $this->params->query['name_startsWith']; 
     $this->log($str, 'debug'); 
     $name='Departmet'; 
     $this->layout = 'ajax'; 
     $departments = $this->Employee->Department->find('all', array('recursive' => -1, 
      'conditions'=>array('Department.name LIKE'=>$str.'%'), 
      'fields'=>array('name', 'id'))); 
     $this->set('departments',$departments); 
} 

在这里,我需要发送的$部门为JSON。

  1. 如何发送响应,JSON
  2. 为什么控制器没有达到自动完成成功函数(其中我已经把警报)

当我跑我得到响应(使用Firebug)作为

 [{"Department":{"name":"Testing","id":"1"}},{"Department":{"name":"Testing","id":"3"}},{"Department":{"name":"Testing2","id":"6"}},{"Department":{"name":"testing","id":"7"}},{"Department":{"name":"test","id":"8"}}] 

回答

1

你的回复是有效的JSON,所以你的dataType也必须是。

dataType: "json" 
+0

然后你的问题描述是错误的。 – Alexander 2012-04-09 15:10:49