如何通过URL使用路由删除记录?

时间:2016-01-19 20:35:33

标签: php json codeigniter

我想通过JSON删除数据库中的数据,并且我使用codeigniter框架

我的route.php

$route['api/mahasiswa/delete/(:any)']['DELETE'] = 'MahasiswaController/deleteMahasiswa/$1';

我的控制器

  public function deleteMahasiswa($id)

$this->Mahasiswa->deleteMahasiswa($id);

$response = array(
  'Success' => true,
  'Info' => 'Data Berhasil di hapus');

$this->output
  ->set_status_header(200)
  ->set_content_type('application/json', 'utf-8')
  ->set_output(json_encode($response, JSON_PRETTY_PRINT))
  ->_display();
  exit;

我的模特

public function deleteMahasiswa($id)

$val = array(
  'id' => $id
);
$this->db->delete('mahasiswa', $val);

我试图访问

http://localhost/json/public/api/mahasiswa/delete/6

但它没有工作

但我的数据是工作

我的路线

$route['api/mahasiswa/get/(:num)/(:num)']['GET'] = 'MahasiswaController/getMahasiswa/$1/$2';

我的控制器

  public function getMahasiswa($page, $size)

{

$response = array(
  'content' => $this->Mahasiswa->getMahasiswa(($page - 1) * $size, $size)->result(),
  'totalPages' => ceil($this->Mahasiswa->getCountMahasiswa() / $size));

$this->output
  ->set_status_header(200)
  ->set_content_type('application/json', 'utf-8')
  ->set_output(json_encode($response, JSON_PRETTY_PRINT))
  ->_display();
  exit;

}

我的模特

  public function getCountMahasiswa()

  return $this->db->count_all_results('t_akun', FALSE);

公共函数getMahasiswa($ page,$ size)

  return $this->db->get('t_akun', $size, $page);

我使用这样的网址

http://localhost/json/public/api/mahasiswa/get/1/5/

get data

1 个答案:

答案 0 :(得分:2)

尝试删除http

route.php

$route['api/mahasiswa/delete/(:any)'] = 'MahasiswaController/deleteMahasiswa/$1';

在控制器中

public function deleteMahasiswa($id)
{
    $this->Mahasiswa->deleteMahasiswa($id);

    $response = array('Success' => true, 'Info' => 'Data Berhasil di hapus');

    echo json_encode($response, JSON_PRETTY_PRINT);
}

如果通过javascript AJAX例程调用此函数,则不需要路由设置。为什么要打扰一个永远不会在浏览器中看到的漂亮网址?

您尝试访问的网址

http://localhost/json/public/api/mahasiswa/delete/6

表示您使用的文件组织方式与典型(和推荐)Codeigniter结构不同。您可以尝试更改路线

$route['/json/public/api/mahasiswa/delete/(:any)'] = 'MahasiswaController/deleteMahasiswa/$1';

看看会发生什么。

/(:any)是一张外卡,连接到语句末尾的/$1。基本上是说"采取最后一次斜线后的任何内容,并用该值替换$ 1"。