如何将AJAX数据传递到CodeIgniter控制器并从数据库获取对应数据
AJAX传值到控制器无返回问题修复方案
核心错误原因
- 前后端字段键名不匹配:前端AJAX传递的字段名为
orderfrom1、orderto1、agentlist1,但后端控制器、模型中读取的是不存在的order_from、order_to字段,导致无法正常取值。
分步修复代码
1. 控制器(Controller.php)修复
$details = $this->input->post(); // 替换为前端传递的对应字段名 $data["orderfrom1"] = date("Y-m-d", strtotime($details['orderfrom1'])); $data["orderto1"] = date("Y-m-d", strtotime($details['orderto1'])); $data["agentlist1"] = $this->Maindata->wiresearch1($details);
2. 模型(Model.php)修复
// 替换为前端传递的对应字段名 $orderfrom = date("Y-m-d", strtotime($data2['orderfrom1'])); $orderto = date("Y-m-d", strtotime($data2['orderto1'])); $agent_list = implode(', ', array_map(function($val){ return sprintf("'%s'", $val); }, $data2["agentlist1"]));
额外排查项
- 若
#ag1是多选下拉框,需要给元素添加multiple属性,否则$("#ag1").val()只能拿到单个字符串,模型中的array_map处理会报错 - 调试阶段可在控制器第一行添加
var_dump($this->input->post());打印所有POST参数,确认参数是否正常传递到后端,调试完成后删除即可 - 若你的CodeIgniter框架开启了CSRF防护,需要在AJAX的formData中添加CSRF token参数,否则POST请求会被框架拦截
内容的提问来源于stack exchange,提问作者Gaming With Shady Wolf
相关产品推荐
相关产品推荐

