开发者社区> 问答> 正文

求教Codeigniter 如何处理普通请求和ajax请求

在Codeigniter中,所有的请求一般都对应于一个Controller中的函数, 如果对于不同的请求,如ajax和普通请求,返回的东西一般都会不一样 如this->load->view 或者直接echo

两种方法写在一起让我感觉特别不爽,我设想了一种方案就是使用Http头中的Accept,如何产生一种方式,就是在一个函数中,不同的请求输出不同的view样式,比如ajax请求这个函数,就返回json格式,普通请求,就返回HTML。 请问我想要这样的效果,怎么做才好。

展开
收起
落地花开啦 2016-06-15 11:36:36 2386 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    ajax 请求一盘只管返回 json 数据,不会直接给 HTML 的,而 view 是直接 include 的 view,原理不一样吧,如果你非要这么种,那么自定义一下 view 方法即可:

    public function loadView($view, $data) {
    
        if( $this->input->is_ajax_request() ) {
            echo $this->load->view($view, $data, TRUE);
            exit;
        }
    
        // 如果是 ajax 不会执行到这里
        $this->load-<view($view, $data);
    }

    以后你载入 view 时,使用 $this->loadView($viewName, $data) 而不再使用 $this->load->view(); 即可,这个 loadView 方法你可以写在父 Contrller 里面。

    2019-07-17 19:39:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
WEB浏览器中即将发生的安全变化 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载