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

如何使用AJAX将MySQL数据渲染到文本框、下拉菜单及HTML表格

实现文本框、下拉菜单数据填充的调整步骤

1. 修改后端ajaxload.php,返回结构化JSON数据

原来的后端仅返回表格HTML,无法同时给多个前端组件提供数据,需要改成返回JSON格式,把表格内容、文本框待填充值、下拉菜单选项都整合到返回结果里:

$myConn = mysqli_connect("localhost", "root", "", "test") or die("数据库连接失败");
$sqlQuery = "select * from students";
$result = mysqli_query($myConn, $sqlQuery) or die ("SQL执行失败");

$returnData = [
    'table_html' => '', // 存储原来的表格HTML
    'form_data' => [], // 存储待填充到文本框的单条学生数据
    'select_options' => [] // 存储下拉菜单需要的所有学生选项
];

if(mysqli_num_rows($result) > 0) {
    // 组装表格HTML逻辑保持不变
    $output = "
    <table border='2' cellpadding='5px' cellspacing='5px'>
    <tr>
        <th width='100px'>ID</th>
        <th>姓名</th>
        <th width='100px'>删除</th>
        <th width='100px'>编辑</th>
    </tr>";
    $allStudents = [];
    while($row = mysqli_fetch_assoc($result)){
        $allStudents[] = $row;
        $output .= "    
        <tr>
            <td>{$row['st_id']}</td>
            <td>{$row['st_first_name']} {$row['st_last_name']}</td>
            <td><button class='btn-delete' data-myid={$row['st_id']}>删除</button></td>
            <td><button class='btn-edit' data-myid={$row['st_id']}>编辑</button></td>
        </tr>"; 
    }
    $output .= "</table>";
    $returnData['table_html'] = $output;
    // 示例:默认取第一条学生数据填充文本框,可按需替换为指定ID的查询结果
    $returnData['form_data'] = $allStudents[0] ?? [];
    // 下拉菜单需要的全量学生数据
    $returnData['select_options'] = $allStudents;

    mysqli_close($myConn);
    // 输出JSON格式结果
    header('Content-Type: application/json');
    echo json_encode($returnData);
} else
{
    header('Content-Type: application/json');
    echo json_encode($returnData);
}

2. 修改前端逻辑,拆分处理不同组件的数据

首先在你的HTML表单中补充下拉菜单元素(已有可跳过):

<!-- 加在addform表单内即可 -->
选择学生:<select id="st-select"></select><br>

修改AJAX代码,分别给表格、文本框、下拉菜单赋值:

$("document").ready(function(){
    // 存储全量学生数据方便后续编辑使用
    let allStuData = [];
    function loadData(){
        $.ajax({
            url: "ajaxload.php",
            type: "post",
            dataType: "json", // 声明预期返回JSON格式
            success: function(data){
                allStuData = data.select_options || [];
                // 1. 填充表格
                $("#table-data").html(data.table_html);
                // 2. 填充文本框,不需要默认填充可以删掉这段
                if(data.form_data) {
                    $("#st-first-name").val(data.form_data.st_first_name);
                    $("#st-last-name").val(data.form_data.st_last_name);
                }
                // 3. 填充下拉菜单
                let selectEl = $("#st-select");
                selectEl.empty(); // 先清空原有选项
                $.each(allStuData, function(index, item){
                    selectEl.append(`<option value="${item.st_id}">${item.st_first_name} ${item.st_last_name}</option>`);
                });
            }        
        }); 
    }
    // 页面加载完成主动拉取一次数据
    loadData();

    // 可选功能:点击编辑按钮填充对应行数据到文本框和下拉菜单
    $(document).on('click', '.btn-edit', function(){
        let stuId = $(this).data('myid');
        let targetStu = allStuData.find(item => item.st_id == stuId);
        if(targetStu) {
            $("#st-first-name").val(targetStu.st_first_name);
            $("#st-last-name").val(targetStu.st_last_name);
            $("#st-select").val(stuId);
        }
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 21:36:07