CakePhp发送响应为Json并显示它
问题描述:
我想使用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。
- 如何发送响应,JSON
- 为什么控制器没有达到自动完成成功函数(其中我已经把警报)
当我跑我得到响应(使用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"}}]
答
你的回复是有效的JSON,所以你的dataType
也必须是。
dataType: "json"
然后你的问题描述是错误的。 – Alexander 2012-04-09 15:10:49