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
相关产品推荐
相关产品推荐

