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

从MySQL获取数据返回Ajax无法解析填充表单输入框问题求助

问题解决方法

问题根源

  1. PHP端返回的是一维索引数组,但JS侧尝试用对象属性(data.count、data.account_id)的方式读取字段,无法匹配到对应值。
  2. 查询无结果时PHP直接输出纯字符串0 results,不符合JSON格式,会触发Ajax的解析错误,无法进入success回调。
  3. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:48:08