CakePHP的:适合于Ajax请求控制器响应是错误的
-
26-09-2019 - |
题
我使用jQuery作出AJAX请求某些控制器的动作。该请求是从在同一控制器中的编辑动作的视图的按钮激活。
我的问题: AJAX请求被返回编辑视图的所有的代码(与所有形式和输入)而不是预期的数目。如果我把同样的AJAX按钮添加操作的角度来看,它的作品完美(它返回数)。
在编辑和添加操作遗体默认(带有烘烤)所产生。
这是jQuery函数使AJAX请求
$.ajax({
type: 'POST',
url: 'checkTargets',
data: {target: tgt_array, channel: channel_type},
success:function(data){
$('#num_subscribers > span').html(data);
},
error:function(){
$('#num_subscribers > span').html("The subscribers could not be loaded");
},
timeout: 5000
});
}
这是动作
function checkTargets() {
if ($this->RequestHandler->isAjax()) {
if(!empty($this->params['form'])) {
$data = $this->params['form'];
if ($data['channel'] === 'SMS') {
$channel = 'sms';
} else {
$channel = 'pin';
}
$targets = $this->processPostTargets($data['target']);
$this->RequestHandler->respondAs('text');
//This echo a NUMBER
echo ClassRegistry::init('Selection')->countSubscribersInTarget($channel, $targets);
Configure:: write('debug', 0);
$this->autoRender = false;
exit();
}
}
}
这是为什么?
由于
解决方案 2
我解决了这一问题。它是在阿贾克斯功能的URL参数(一个小白错误)
它应该是在控制器所引用的动作的完整路径。
此问题帮我理解这个问题: 最佳实践使用操作URL同时呼吁阿贾克斯CakePHP的
固定AJAX请求:
$.ajax({
type: 'POST',
url: '/myapp/campaigns/checkTargets',
data: {target: tgt_array, channel: channel_type},
success:function(data){
$('#num_subscribers > span').html(data);
},
error:function(){
$('#num_subscribers > span').html("The subscribers could not be loaded");
},
timeout: 5000
});
感谢,并请原谅我的英语
其他提示
而无需获得的一切只是一个建议,你试过吗?
$this->autoRender = false;
$this->layout = 'ajax';
另外,我会建议保持简单:
$.post("/controller/checkTargets", function(data) {
alert(data);
}
function checkTargets() {
$this->autoRender = false;
$this->layout = 'ajax';
echo "Im working";
}
和从那里。
不隶属于 StackOverflow