CodeIgniter在使用ajax时获取id参数

时间:2014-07-14 13:23:48

标签: php jquery ajax codeigniter

当我打开特定的客户表单时,我的网址会更改为:

http://localhost/proj/dashboard/customers/edit/1

正如您所看到的那样,带有ID的参数(在本例中为1)。 现在,我想在调用我的ajax之前调用我的ajax时,在控制器上获取此ID。

目前,我的ajax如下:

$.post("ajax_edit", {name: _name, age: _age, function(aux){
   console.log(aux);
});

不发送任何带ID的参数。我希望我可以通过PHP获得它。

print_r($this->uri->segment_array());
/* output:  
Array
(
    [1] => dashboard
    [2] => customers
    [3] => edit
    [4] => ajax_edit
) */

但不幸的是,这对我来说是什么。那么,我怎样才能获得这个价值呢?

3 个答案:

答案 0 :(得分:0)

或者你可以在你的javascript中使用php脚本。

$.post("ajax_edit", {name: _name, age: _age, obj_id: <?php echo $this->uri->segment(4); ?>, function(aux){
   console.log(aux);
});

答案 1 :(得分:0)

在你的route.php配置

$route['dashboard/customers/edit/(:num)'] = "customers/edit/$1";

在您的customer.php控制器

public function edit($user_id) {

    $data['user_id'] = $user_id;
    $this->load->view('NAME_OF_VIEW_FILE', $data);
}

在您的视图文件中

$.post("ajax_edit", {user_id: <?= $user_id ?>, name: _name, age: _age, function(aux){
   console.log(aux);
});

我认为这是使用会话或玩uri_segments的正确方法。

答案 2 :(得分:-1)

解决以不同的方式。虽然我确实认为它不是最佳选择,但我使用了会话变量。

所以在控制器功能编辑中:

public function edit(){
  // all code
  $this->session->set_userdata('obj_id', $this->uri->segment(4)); // which is the ID of the customer 
}

然后在ajax_edit函数中我只需调用该会话项。

public function ajax_edit(){
  $id = $this->session->userdata('obj_id');
}