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

AJAX加载页面后表单提交按钮失效问题求助

问题分析与解决方案

你遇到的提交按钮失效问题,主要是HTML结构不规范和前端脚本加载错误导致的,下面分点说明并给出修复方案:

1. 核心问题:表格与表单的嵌套违反HTML规范

在load.php中,你将<form>直接包裹在<tr>外部/内部,这不符合HTML语法规则:<table>的直接子元素只能是<thead>、<tbody>、<tr>等,不能直接放置<form>标签。浏览器会自动修正这种错误结构,导致表单和提交按钮的关联关系被破坏,最终按钮无法触发提交动作。

修复后的load.php代码

我们可以将表单放在每行的最后一个<td>内部,确保结构合法:

<table class="dataTable">
    <tr>
        <th>Serial</th>
        <th>Date</th>
        <th>Voltage</th>
        <th>Current</th>
        <th>Action</th>
    </tr>
    <?php
    include ("DBconnect.php");
    $conn= mysqli_connect( $dbhost, $dbuser, $dbpass, $db );
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    $sql = "SELECT Date, Voltage, Current FROM dataTable WHERE Date >= (CURDATE() - INTERVAL 10 DAY) ORDER BY Date DESC";
    $result = $conn->query($sql);
    $i=1;
    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            echo '<tr>';
            echo"<td>" . $i. "</td>";
            echo"<td>" . $row["Date"]. "</td>";
            echo"<td>". $row["Voltage"] . "</td>";
            echo"<td>". $row["Current"]. "</td>";
            echo "<td>";
            // 将表单放在td内部,保证结构合法
            echo "<form action='action.php' method='get' target='_blank'>";
            echo '<input type="hidden" name="getTime" value="' . $row["Date"] . '" />';
            echo '<input type="submit" name="Submit" value="select"/>';
            echo "</form>";
            echo "</td>";
            echo '</tr>';
            $i++;
        }
    } else {
        echo "<tr><td colspan='5'>0 results</td></tr>";
    }
    $conn->close();
    ?>
</table>

2. 前端脚本加载错误

在index.html中,你存在script标签嵌套和重复加载jQuery版本的问题:

  • 嵌套的script标签会被浏览器解析错误,导致后续脚本无法正常加载
  • 同时加载jQuery 3.1.1和1.9.0会引发版本冲突,破坏原有功能

修复后的index.html代码

移除重复的jQuery引用,修正script标签结构:

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
    <meta charset="utf-8">
    <title></title>
    <!-- 只保留一个jQuery版本,推荐用较新的3.1.1 -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script type="text/javascript" src="myScript.js"></script>
</head>
<body>
    <div id="auto"></div>
</body>
</html>

3. 可选优化:避免重复刷新的冗余操作

你的myScript.js中,每次刷新的逻辑可以稍微优化,确保DOM操作的顺序更合理(不影响功能,但体验更好):

$(document).ready(function(){
    $('#auto').load('load.php');
    refresh();
});

function refresh() {
    setTimeout(function() {
        $('#auto').fadeOut('slow', function() {
            // 等待淡出完成后再加载新内容
            $(this).load('load.php', function() {
                // 加载完成后再淡入
                $(this).fadeIn('slow');
            });
        });
        refresh();
    }, 10000);
}

完成以上修复后,动态加载的表单提交按钮就能正常触发提交动作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:31:30