Javascript cakePhp中的Ajax自动完成-未找到NetworkError:404
我试图通过从我的视图页面使用jQueryUI库(jQueryAutoComplete)来进行ajax调用,以根据用户输入获取部门名称。自动完成函数看起来像Javascript cakePhp中的Ajax自动完成-未找到NetworkError:404,javascript,ajax,cakephp,jquery,Javascript,Ajax,Cakephp,Jquery,我试图通过从我的视图页面使用jQueryUI库(jQueryAutoComplete)来进行ajax调用,以根据用户输入获取部门名称。自动完成函数看起来像 $( "#auto_complete" ).autocomplete({ source: function( request, response ) { $.ajax({ url: "/employees/getAddress", dat
$( "#auto_complete" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "/employees/getAddress",
dataType: "jsonp",
data: {
featureClass: "P",
style: "full",
maxRows: 12,
name_startsWith: request.term
},
success: function( data ) {
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" );
}
});
class EmployeesController extends AppController {
//var $components = array('Autocomplete');
public $components = array('RequestHandler');
var $helpers = array('Javascript', 'Ajax');
/**
* index method
*
* @return void
*/
//var $helpers = array('Ajax');
public function getAddress() {
$this->log($this->params, 'debug');
$this->layout = 'ajax';
$departments = $this->Department->find('all', array(
'conditions'=>array('Department.name LIKE'=>$this->params['url']['q'].'%'),
'fields'=>array('name', 'id')));
$this->log($departments, 'debug');
//$this->set('departments', $departments);
$this->set(compact('departments'));
}
在这里,我正在调用一个名为getAddress()的操作
看起来像
$( "#auto_complete" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "/employees/getAddress",
dataType: "jsonp",
data: {
featureClass: "P",
style: "full",
maxRows: 12,
name_startsWith: request.term
},
success: function( data ) {
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" );
}
});
class EmployeesController extends AppController {
//var $components = array('Autocomplete');
public $components = array('RequestHandler');
var $helpers = array('Javascript', 'Ajax');
/**
* index method
*
* @return void
*/
//var $helpers = array('Ajax');
public function getAddress() {
$this->log($this->params, 'debug');
$this->layout = 'ajax';
$departments = $this->Department->find('all', array(
'conditions'=>array('Department.name LIKE'=>$this->params['url']['q'].'%'),
'fields'=>array('name', 'id')));
$this->log($departments, 'debug');
//$this->set('departments', $departments);
$this->set(compact('departments'));
}
但每当我调用ajax时,我都会出错
“未找到网络错误:404-”
如何解决此问题?我猜您的url中缺少项目文件夹,请尝试:
var webroot = '<?php echo $this->webroot; ?>';
$( "#auto_complete" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: webroot + "employees/getAddress",
dataType: "jsonp",
data: {
......
var webroot='';
$(“#自动完成”)。自动完成({
来源:功能(请求、响应){
$.ajax({
url:webroot+“员工/getAddress”,
数据类型:“jsonp”,
数据:{
......
或者您可以在layouts/default.ctp中定义webroot并使用它C:\xamplite\htdocs\cakephp\app这是我的应用程序的路径您可以告诉我如何给出正确的url吗?url:“app/employees/getAddress”是否,有意义吗?我正在以相同的方式尝试自动完成,但我不确定当我从ajax调用接收数据时如何调用响应函数。您能否扩展显示如何调用该响应回调的答案?