我使用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";
}

和从那里。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top