首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Codeigniter -检测请求的发送者

Codeigniter -检测请求的发送者
EN

Stack Overflow用户
提问于 2013-03-20 21:07:58
回答 1查看 130关注 0票数 0

我正在建立一个商业网站,与购物车。

在大多数页面(即产品页面,类别页面)上,我希望在侧边栏上显示购物车内容,当项目添加到购物车时,侧边栏将通过AJAX进行更新。

在“显示购物车”页面上,我想要显示内容的完整版本。

显然,使用相同的模型和函数来获取和/或更新购物车似乎是合乎逻辑的,但是将数据发送到不同的视图(侧栏或完整购物车),这取决于调用者页面。

问题是,在购物车模型中,我如何检测请求来自哪里。

我想我应该检查请求是否通过AJAX发送,如下所示:

代码语言:javascript
复制
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') // i.e - the request came as AJAX
{
    $this->load->view('cart_sidebar_view', $data);
}else{ /* not ajax */
    $data['main_content'] = 'cart_view';
    $this->load->view('includes/template', $data);
}

但这还不够好,因为我还想在"display cart“页面上使用AJAX,以允许从那里更新购物车。

那么,在购物车模型中,有没有办法检测请求来自哪里?或者我必须在每个“添加到购物车”或“删除”按钮的隐藏表单域中发送该信息?

EN

回答 1

Stack Overflow用户

发布于 2013-03-20 21:13:15

有一种简单的方法。当您从显示购物车页面发送请求时,发送一个额外的变量。在控制器中检查这个变量,如果变量来了,调用一个逻辑,如果变量没有来,做一些其他的事情。

代码语言:javascript
复制
if($this->input->is_ajax_request()) 
{
    $this->load->view('cart_sidebar_view', $data);
}else{
    if($this->input->post('another_variable')){
        // do something else
    }else{
        $data['main_content'] = 'cart_view';
        $this->load->view('includes/template', $data);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15524448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档