如何从CodeIgniter视图中获取发出Ajax请求的URI段?

时间:2012-01-29 16:34:02

标签: ajax codeigniter jquery controller uri

我正在使用jQuery从名为“edit”的视图中调用我的“志愿者”CodeIgniter控制器的方法,该视图采用单个参数“id”

视图的URI是: volunteer/edit/3

我调用了我的update()方法:

$.post('volunteer/update', function(data) {
    console.log(data);
});                 

现在所有方法都是回显一个URI段:

public function update(){
    echo $this->uri->segment(2, 0);
}

想要的是视图的URI的一部分,其中update()被调用(“编辑”视图)。相反,我得到了一段update()的URI。如何获取编辑视图的URI片段,以便我可以在update()方法中使用它?

2 个答案:

答案 0 :(得分:2)

您可以使用

获取引荐来源网址
$_SERVER['HTTP_REFERER']

然后手动解析以获取您的细分。​​

它不是100%安全的,因为它可以被覆盖(它被服务器设置为标题)。

详细了解旧post

答案 1 :(得分:0)

您需要传入AJAX调用的POST数据中的段值。

您的选择是:

1)您可以使用JavaScript解析URL以确定该段的值,例如:

<script>
var postData;
// assign whatever other data you're passing in
postData.lastSegment = window.location.href.substr(window.location.href.lastIndexOf('/') + 1);
$.post('volunteer/update', postData, function(data) {
    console.log(data);
});
</script>

2)您可以使用PHP在视图中预先填充JavaScript变量,然后在POST中使用

<script>
var postData;
// assign whatever other data you're passing in
postData.lastSegment = <?php echo $this->uri->segment(2, 0); ?>;
$.post('volunteer/update', postData, function(data) {
    console.log(data);
});
</script>

最后在update()控制器中,您可以使用$this->input->post()$_POST从POST中提取数据。