php - 找不到 CodeIgniter 数据表 ajax url。路由问题?
问题描述
我不知道如何在视图中设置数据表的 url。我认为这是一个路由问题,因为数据表可以使用控制器 Pages.php 中的函数,但不能使用控制器 Djur.php 中的函数。
我的结构是:
-application
--controllers
---Djur.php
---Pages.php
--models
---Djur_model
--views
---djur
----mina_djur (1)
---pages
----mina_djur (2)
两个控制器都包含相同的功能:
public function __construct() {
Parent::__construct();
$this->load->model("djur_model");
}
public function djurlista()
{
// Datatables Variables
$draw = intval($this->input->get("draw"));
$start = intval($this->input->get("start"));
$length = intval($this->input->get("length"));
$djur = $this->djur_model->get_djur();
$data = array();
foreach($djur->result() as $r) {
$data[] = array(
$r->ani_se_number,
$r->ani_individual_number,
$r->ani_gender,
$r->ani_date_of_birth,
$r->ani_race,
$r->ani_name,
$r->ani_mother,
$r->ani_father
);
}
$output = array(
"draw" => $draw,
"recordsTotal" => $djur->num_rows(),
"recordsFiltered" => $djur->num_rows(),
"data" => $data
);
echo json_encode($output);
exit();
}
文件夹 djur (1) 中的视图 mina_djur.php 的 url 指定如下:
<script type="text/javascript">
$(document).ready(function() {
$('#mina_djur').DataTable(
{
"ajax": {
url : "<?php echo site_url("djur/djurlista") ?>",
type : 'GET'
},
}
);
});
</script>
加载页面 localhost/djur/mina_djur 时,一切都显示正确,除了数据表无法加载数据(Ajax 错误消息)。浏览器中的开发人员工具显示 XHR 的 500 错误。
然而,
当加载页面localhost/mina_djur(视图位于文件夹页面(2))数据表可以获取数据。在此文件中,url 指定为:
<script type="text/javascript">
$(document).ready(function() {
$('#mina_djur').DataTable(
{
"ajax": {
url : "<?php echo site_url("pages/djurlista") ?>",
type : 'GET'
},
}
);
});
</script>
如果视图位于文件夹页面而不是文件夹 djur 中,则一切正常的事实让我认为,当尝试从 djur/mina_djur 获取控制器 Djur.php 中的函数 djurlista 时,问题一定出在路由上。或者由于视图中的 url 错误。
我的路线是:
$route['djur'] = 'djur/view/mina_djur';
$route['djur/(:any)'] = 'djur/view/$1';
$route['om'] = 'pages/view/om';
$route['mina_djur'] = 'pages/view/mina_djur'; // Required to make the view in folder pages work
$route['default_controller'] = 'pages/view';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
为什么视图views/djur/mina_djur 不能使用控制器Djur.php 中的djurlista 函数?
解决方案
您应该将最具体的路线放在首位。所以交换这两个的顺序:
$route['djur'] = 'djur/view/mina_djur';
$route['djur/(:any)'] = 'djur/view/$1';
像这样:
$route['djur/(:any)'] = 'djur/view/$1';
$route['djur'] = 'djur/view/mina_djur';
推荐阅读
- linux - 在 bash 文件中为 mosquitto 代理使用密码文件
- hibernate - 在Spring中以相同的形式上传具有另一个对象的文件
- game-physics - 在与线碰撞后求出球的 X 和 Y 速度
- wordpress - WooCommerce 中的“无效电子邮件”
- google-drive-api - Google Drive API -- 根 ID
- wordpress - 如何获得正确的 docker-compose Multiline 环境变量格式?
- c++ - 相同的程序在 C 中有效,但在 C++ 中无效(使用 linux 系统调用)
- typescript - 类型“ProxyTargetUrl”错误中不存在属性“主机”。即使我在 JS 文件中获得 IntelliSense
- sql-server - 拒绝对存储过程中的表的选择权限 - SQL Server
- arrays - MIPS将字符放入字符串中的位置正在删除字符串的堆地址