调用CodeIgniter控制器方法返回404

时间:2019-05-19 18:21:36

标签: codeigniter http-status-code-404

首次尝试使用CI,使用Ajax调用方法时出现“找不到页面”错误。仔细检查了名字,现在就迷路了。

[page_a.php]
<script>
  function f1() {
    $.ajax({
    type: 'POST',
    url: '<?= site_url("controller_a/method_a") ?>',
    error: function (jqXHR, exception) {
    var msg = '';
         if (jqXHR.status == 0            ) msg = 'Not connected, verify network [000]';
    else if (jqXHR.status == 404          ) msg = 'Requested page not found [404]';
    else if (jqXHR.status == 500          ) msg = 'Internal server error [500]';
    else if (exception    == 'parsererror') msg = 'Requested JSON parse failed';
    else if (exception    == 'timeout'    ) msg = 'Time out error';
    else if (exception    == 'abort'      ) msg = 'Ajax request aborted';
    else                                    msg = jqXHR.responseText;
    alert(msg);
}});}
</script>

[controller_a.php]
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class controller_a extends MY_Controller {
public function method_a() {
    echo '<script>alert(":-)");</script>';
}}

3 个答案:

答案 0 :(得分:0)

foreach

尝试使用此方法保留Controller的首字母大写并回显网站网址。

答案 1 :(得分:0)

请检查您的 routes.php 文件。该文件中可能还有另一个重定向。 和

答案 2 :(得分:0)

[page_a.php]
<script>
  function f1() {
    $.ajax({
    type: 'POST',
    url: '<?= site_url("index.php/Controller_a/Method_a") ?>'
});}
</script>

[Controller_a.php]
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Controller_a extends CI_Controller {
public function Method_a() {
    echo '<script>alert(":-)");</script>';
}}

尝试使用大写字母,扩展CI_Controller和index.php,但还没有运气。

我注意到如果我使用

<?= site_url("Controller_a/Method_a") ?>

在html中,以便在加载/呈现页面时调用它,然后找到并调用该方法,但是在页面加载后使用Ajax / JS动态调用时才找到该方法。

在控制台中,地址为

www.example.com/Controller_a/Method_a

实际地址是

www.example.com/web/content/application/controllers/Controller_a.php