【问题标题】:CodeIgniter datatables ajax url can't be found. Routing problem?找不到 CodeIgniter 数据表 ajax url。路由问题?
【发布时间】:2020-01-17 13:16:55
【问题描述】:

我不知道如何在视图中设置数据表的 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函数?

【问题讨论】:

    标签: php codeigniter datatables


    【解决方案1】:

    您应该将最具体的路线放在最上面。所以交换这两者的顺序:

    $route['djur'] = 'djur/view/mina_djur';
    $route['djur/(:any)'] = 'djur/view/$1';
    

    像这样:

    $route['djur/(:any)'] = 'djur/view/$1';
    $route['djur'] = 'djur/view/mina_djur';
    

    【讨论】:

    • 感谢@SurfMan 的回答。不幸的是,它并没有解决问题。 /mina_djur 仍然从数据库中获取数据,但 /djur/mina_djur 没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 2016-10-29
    • 2011-09-23
    相关资源
    最近更新 更多