我的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时,问题就不存在了,所有问题都在本地和远程服务器上完美运行。
感谢您的帮助:)
答案 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。