我正在用CakePHP和jQuery构建一个网页,我想ajaxify,但也想让每个人都可以访问它,所以我正在深入研究渐进式增强。在beforeRender()
中,我有这个简单的片段,它非常适合简单的请求:
public function beforeRender()
{
if($this->request->is('ajax'))
{
$this->layout = 'ajax';
}
}
因此,当我有一个 ajax 请求时,它只会呈现内容,而不是整个菜单、标题等,如果没有,它会正常呈现。
但是我迷失了,因为它应该是服务器的正确答案。我的意思是,如果这是一个正常的请求,页面加载正常。但是如果它是一个 ajax 请求,我无法获得任何我会设置的变量,例如,通过 javascript。或任何操作状态(如果他失败、成功等)。现在,我正在通过响应标头发送任何额外的内容,但我不知道这样做是否是一种好习惯,那么,关于如何解决此问题的任何建议?
您可以使用 CakeResponse 进行调试。
if ($this->RequestHandler->isAjax()) {
//your code here
return new CakeResponse(array('body'=> json_encode('...message here...'),'status'=>200));
}
这是在 ajax 函数内部,而不是在渲染之前