Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何处理ajax和渐进式增强?_Jquery_Ajax_Cakephp_Progressive Enhancement - Fatal编程技术网

Jquery 如何处理ajax和渐进式增强?

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请求时,它只是呈现内

我正在用CakePHP和jQuery构建一个网页,我想让它成为ajaxify,但也希望每个人都能访问它,所以我正在深入研究渐进式增强。在
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请求的渲染视图中设置了它们。