从MySQL获取数据返回Ajax无法解析填充表单输入框问题求助
问题解决方法
问题根源
- PHP端返回的是一维索引数组,但JS侧尝试用对象属性(
data.count、data.account_id)的方式读取字段,无法匹配到对应值。 - 查询无结果时PHP直接输出纯字符串
0 results,不符合JSON格式,会触发Ajax的解析错误,无法进入success回调。 - alert展示的是数组隐式转为字符串后的逗号分隔结果,本质返回值已经是JS可直接操作的数组,不需要调用split方法拆分。
修复代码
PHP端调整
统一返回结构化的关联数组,所有场景均输出标准JSON格式:
$Month = $connect->real_escape_string($_POST['monthyear']); // 连接校验优先处理 if(!$connect) { die(json_encode(['code' => 0, 'msg' => '数据库连接失败: ' . mysqli_error($connect)])); } // 统计当月记录数 $sqlc = $connect->query("SELECT * FROM expensemonthly WHERE yearmonth = '$Month'"); $count = $sqlc->num_rows; $account_list = []; if ($count > 0) { // 改用JOIN写法,明确字段查询避免冗余数据 $sql = "SELECT expensemonthly.account_id, accounts.name FROM expensemonthly INNER JOIN accounts ON accounts.account_id = expensemonthly.account_id WHERE expensemonthly.yearmonth = '$Month'"; $result = mysqli_query($connect, $sql) or die(json_encode(['code' => 0, 'msg' => '查询失败: ' . mysqli_error($connect)])); while($row = mysqli_fetch_assoc($result)) { $account_list[] = $row; // 每条记录存储为包含account_id和name的子数组 } } // 统一返回JSON结构 exit(json_encode([ 'code' => 1, 'count' => $count, 'account_list' => $account_list ])); mysqli_close($connect);
JS端调整
//Count Registers and Fill Inputs $('#count').click(function(){ $.ajax({ url:"CountFetchExpensesArrayDos.php", method: 'POST', dataType: 'json', data:{monthyear:"112021"}, success:function(data){ if(data.code === 1) { // 调试用console.log查看完整结构,不要用alert console.log(data); alert("Se detectaron: "+ data.count +" registros"); AddInputs(data.count); // 遍历账户列表填充输入框 data.account_list.forEach((item, index) => { // 此处对应你的输入框规则赋值即可,示例如下 // $(`#account_id_${index}`).val(item.account_id); // $(`#account_name_${index}`).val(item.name); FillExpensesInputs(data.count, item.account_id, item.name, index); }) } else { alert(data.msg); } }, error: function() { alert('请求异常,请检查接口返回格式'); } }); });
注意事项
- 调试时打开浏览器F12开发者工具,用console.log输出查看数据结构,比alert更直观清晰
- 现有SQL写法仍存在SQL注入风险,建议替换为预处理查询语句,安全性更高
- 所有接口返回统一为JSON格式,避免混合输出字符串导致的解析错误
内容的提问来源于stack exchange,提问作者lexer
相关产品推荐
相关产品推荐

