使用jQuery Ajax的Cake App在远程服务器上不起作用:(

时间:2013-04-19 09:46:03

标签: php jquery ajax cakephp cakephp-2.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(){}

和相关的View(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时,问题就不存在了,所有问题都在本地和远程服务器上完美运行。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

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

您可以向/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。