Jquery CakePHP:Ajax请求的控制器响应错误

Jquery CakePHP:Ajax请求的控制器响应错误,jquery,ajax,cakephp,cakephp-1.3,Jquery,Ajax,Cakephp,Cakephp 1.3,我使用jQuery向一些控制器操作发出AJAX请求。此请求通过同一控制器中编辑操作视图中的按钮激活 我的问题是: Ajax请求返回的是编辑视图的所有代码(包括所有表单和输入),而不是预期的数字。如果我在add操作的视图中放置相同的ajax按钮,那么它工作得非常完美(返回数字) “编辑”和“添加”操作保留为默认情况下生成的操作(使用烘焙) 这是发出ajax请求的jQuery函数 $.ajax({ type: 'POST', url:

我使用jQuery向一些控制器操作发出AJAX请求。此请求通过同一控制器中编辑操作视图中的按钮激活

我的问题是: Ajax请求返回的是编辑视图的所有代码(包括所有表单和输入),而不是预期的数字。如果我在add操作的视图中放置相同的ajax按钮,那么它工作得非常完美(返回数字)

“编辑”和“添加”操作保留为默认情况下生成的操作(使用烘焙)

这是发出ajax请求的jQuery函数

        $.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();

            }
        } 

    }
为什么会这样


谢谢

只是一个建议,没有访问所有内容,您尝试过这个吗

$this->autoRender = false;
$this->layout = 'ajax';
我还建议保持简单:

$.post("/controller/checkTargets", function(data) {
   alert(data);
}

function checkTargets() {
  $this->autoRender = false;
  $this->layout = 'ajax';
  echo "Im working";
}

然后从那里开始。

我解决了这个问题。这是.ajax函数中的URL参数(一个noob错误)

它应该是控制器中引用操作的完整路径

这个问题帮助我理解了这个问题:

修复了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
    });

谢谢并原谅我的英语

谢谢小后子。我试过了,但我发现问题可能是URL参数。我更改了“/myapp/campaigns/checktargets”的“checktargets”,它正在运行。@Jose与其让您的问题挂起,不如添加您的答案并将其标记为您的首选答案(通过单击勾号)。避免人们认为你还在等待答案。是的,我会这么做。我想确定问题是否解决了。再次感谢你,url中的“myapp”是什么?