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