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

AJAX设置POST请求但CodeIgniter控制器无法通过$_POST获取参数

解决CodeIgniter中AJAX POST请求无法获取参数的问题

以下是几种常见原因及对应解决办法:

1. 检查AJAX请求的URL是否正确

你的AJAX中url: "getData"属于相对路径,容易出现路由错误,导致请求并未到达目标控制器方法。建议使用CodeIgniter的site_url()函数生成完整URL:

前端代码修改:

$.ajax({
  url: "<?php echo site_url('你的控制器名/getData'); ?>", // 替换为实际控制器名称
  type: "POST",
  data: {
    no_spk: $("#input_nomor_spk").val()
  },
  success: function(result) {
    // 注意:返回JSON需先解析
    result = JSON.parse(result);
    $("#input_rujuk_sp1").val(result.no_surat_text);
  }
});

2. 处理CSRF保护(CodeIgniter默认开启)

如果你的CodeIgniter开启了CSRF保护(config.php中$config['csrf_protection'] = TRUE;),AJAX请求必须携带CSRF token才能通过验证,否则参数会被拦截。

方法一:在AJAX数据中手动添加CSRF token

$.ajax({
  url: "<?php echo site_url('你的控制器名/getData'); ?>",
  type: "POST",
  data: {
    no_spk: $("#input_nomor_spk").val(),
    '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
  },
  success: function(result) {
    result = JSON.parse(result);
    $("#input_rujuk_sp1").val(result.no_surat_text);
  }
});

方法二:全局设置自动添加CSRF token(推荐)

在页面底部添加全局AJAX配置,所有请求自动携带token:

$(document).ready(function() {
  $.ajaxSetup({
    data: {
      '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
    }
  });
});

3. 验证控制器方法的参数接收逻辑

检查控制器方法是否为public,同时确认参数名称完全匹配($this->input->post()区分大小写)。可添加调试语句确认参数是否传递:

控制器代码修改:

public function getData() {
  // 调试:打印所有POST参数
  print_r($this->input->post());
  exit;

  $no_spk = $this->input->post("no_spk");
  $data = $this->m_surat->cari($no_spk);
  echo json_encode($data);
}

若调试输出为空,说明请求未传递参数,回到前两步排查;若输出中无no_spk,检查前端$("#input_nomor_spk").val()是否有值。

4. 显式指定AJAX的contentType(可选)

虽然jQuery默认会处理参数格式,但显式指定contentType可避免潜在的格式问题:

$.ajax({
  url: "<?php echo site_url('你的控制器名/getData'); ?>",
  type: "POST",
  contentType: "application/x-www-form-urlencoded; charset=UTF-8",
  data: {
    no_spk: $("#input_nomor_spk").val()
  },
  success: function(result) {
    result = JSON.parse(result);
    $("#input_rujuk_sp1").val(result.no_surat_text);
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:11:08