You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codeigniter 4中AJAX POST请求出现404错误的求助

问题:AJAX POST请求返回404错误(CodeIgniter + XAMPP环境)

本地XAMPP环境下使用jQuery AJAX处理表单提交,始终返回404页面未找到错误。

前端AJAX代码

$(document).on("click", ".iconsTop .iconst", function (e) {
    var idfilter = $(this).attr("id");
    $.ajax({
      type: "POST",
      dataType: "text",
      url: "filter",
      data: { filter_id: idfilter },
      cache: false,
      success: function (data) {
        $('.maincontact').empty().append(data);
      }
    });
  });

CodeIgniter控制器代码

class App_home extends BaseController
{
    public function filter()
    {
        echo 'ok';
    }
}

路由配置

use CodeIgniter\Router\RouteCollection;
$routes->setAutoRoute(true);
$routes->get('filter', 'App_home::filter');

浏览器返回错误

jquery-3.7.1.min.js:2 POST http://localhost/app/public/filter 404 (Not Found)

404 Controller or its method is not found: Filter::index


解决方法
  • 添加POST路由规则
    目前仅配置了GET请求的路由,但AJAX使用的是POST方法,因此需要在路由文件中补充POST规则:

    $routes->post('filter', 'App_home::filter');
    

    或者使用匹配多种请求方法的规则,同时支持GET和POST:

    $routes->match(['get', 'post'], 'filter', 'App_home::filter');
    
  • 修正AJAX请求URL
    避免相对路径导致的路径错误,建议使用绝对路径发起请求:

    url: "/app/public/filter",
    

    或者借助CodeIgniter的base_url()函数生成正确路径(需确保前端已加载URL辅助函数):

    url: "<?= base_url('filter') ?>",
    
  • 确认路由优先级
    虽然开启了setAutoRoute(true),但手动配置的路由会优先于自动路由生效。若依赖自动路由,请求路径应为/app_home/filter,但显然你需要/filter这个路径,因此手动添加POST路由是更可靠的方案。

内容的提问来源于stack exchange,提问作者user837032

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 19:34:50