0

我的 Cake App 有问题。

我的操作代码如下:

public function event($year, $month) {
        if($this->RequestHandler->isAjax())
            return new CakeResponse(array('body'=> json_encode($this->Event->getMessages($year, $month))));
        else
            $this->set('event', $this->Event->getMessages($year, $month));
}

此外,我还有第二个动作,它是空方法:

public function tester(){}

和相关的视图(tester.ctp)

<div id="result"></div>
<script>    
    (function($) {
        $(document).ready(function(){
            var url = '<?php echo Router::url(array('controller' => 'events', 'action' => 'event', '2013', '4'));?>';
            $.get(url, function(data){ 
               data = $.parseJSON(data);
               for(var i = 0; i < data.length; i++) 
                   $('#result').append(data[i].date + ' ' + data[i].message + '<br />');
            });
        });
    })(jQuery);
</script>

问题如下。我的应用程序在我的本地服务器上运行良好,但在远程服务器上无法运行。令人沮丧的是,当我在一个用纯 PHP 编写的控制器上交换 Cake 时,问题就不存在了,并且一切都在本地和远程服务器上完美运行。

感谢帮助 :)

4

1 回答 1

0

您可能想查看 CakePHP 手册http://book.cakephp.org/2.0/en/views/json-and-xml-views.html中的 _serialize

您可以向 /events/event/2013/4.json 发送请求,并使用 _serialize 检索 json 对象,请务必添加 Router::parseExtensions('json'); 到您的路线文件。

public function event($year, $month) {
    $this->set('event', $this->Event->getMessages($year, $month));
    $this->set('_serialize', array('event'));
}

这样你就不需要检测它是否是ajax。

于 2013-04-24T14:20:57.353 回答