讲师中心 微信公众号
AI工具推荐 视频效率加速

如何通过 AJAX 实现表单多次提交而不刷新页面

梦磊吖_7644

梦磊吖_7644

发布时间:2026-08-16 11:24:23

|

775人浏览过

|

来源于php中文网

原创

如何通过 AJAX 实现表单多次提交而不刷新页面

本文详解如何修复 ajax 表单提交后仅生效一次的问题,通过正确清空输入框值、避免重复绑定事件及规范 dom 操作,实现无需刷新即可连续多次向数据库插入数据。

本文详解如何修复 ajax 表单提交后仅生效一次的问题,通过正确清空输入框值、避免重复绑定事件及规范 dom 操作,实现无需刷新即可连续多次向数据库插入数据。

你遇到的“第二次点击保存无反应”问题,根本原因在于 JavaScript 清空表单字段的方式错误,以及潜在的 事件重复绑定风险。

在你的原始代码中,使用了 $('#Description').text('') 等语句来清空输入框——这是严重错误:.text() 作用于元素的文本内容,而 <input> 元素的用户输入值(value)应通过 .val() 方法操作。使用 .text('') 不会清空输入框,导致后续 serialize() 仍读取旧值(或空字符串),但更关键的是:若表单未真正清空,用户可能误以为已提交成功,实际却因字段为空/重复触发校验失败或 SQL 插入异常。

此外,将事件监听器写在 $(document).ready() 内虽常见,但若页面动态重载或脚本被多次引入,可能导致 #btn_save 被重复绑定多个 click 事件,造成逻辑混乱(例如一次点击触发多次请求)。

✅ 正确做法如下:

AJAX技术—无刷新获取数据相关课件
AJAX技术—无刷新获取数据相关课件

AJAX技术—无刷新获取数据相关课件

下载

1. 使用 .val('') 清空输入框值

success: function(response) {
    $('#result').text(response);
    // ✅ 正确:清空 input 的 value 属性
    $('#Description').val('');
    $('#Unitys').val('');
    $('#quantitys').val('');
    $('#Text1s').val('');
    $('#PurchaseQty').val('');
    $('#Amount1').val('');
}

2. 确保事件只绑定一次(推荐解耦写法)

避免嵌套在 $(document).ready() 中重复执行,推荐使用一次性委托或直接绑定:

<!-- 移除内联 onclick -->
<input class="button is-info is-large" id="btn_save" type="button" value="Save" />
// 推荐:页面加载后仅绑定一次
$(function() {
    $('#btn_save').off('click').on('click', function(e) {
        e.preventDefault(); // 防止意外默认行为
        const data = $('#myform').serialize() + '&btn_save=btn_save';
        $.ajax({
            url: 'insert.php',
            type: 'POST', // ⚠️ 强烈建议改用 POST(见下方说明)
            data: data,
            success: function(response) {
                $('#result').text(response);
                // 清空所有输入框
                $('#myform')[0].reset(); // 更简洁:重置整个表单
            },
            error: function(xhr, status, err) {
                $('#result').text('Error: ' + status);
            }
        });
    });
});

3. 关键改进:将请求方法从 GET 改为 POST

你当前使用 type: 'Get' 提交敏感操作(数据库写入),这违反 REST 规范且存在严重隐患:

  • GET 请求参数暴露在 URL 中,易被缓存、记录或截获;
  • URL 长度限制可能导致大数据截断;
  • 浏览器可能对相同 URL 的 GET 请求进行缓存,导致第二次请求直接返回缓存结果(看似“没反应”)。

✅ 修改为 POST,并同步更新 PHP 端:

// JS 端
type: 'POST',
// insert.php 中改为
if (isset($_POST['btn_save'])) {
    $DescriptionZ = mysqli_real_escape_string($con, $_POST['Description']);
    $UnityZ = mysqli_real_escape_string($con, $_POST['Unitys']);
    // ... 其他字段同理(全部改用 $_POST)

    $sql = "INSERT INTO `orders` (`id`, `OrderID`, `Description`, `Unit`, `Quantity`, `Cost`, `Purchasing Qty`, `Amount`) 
            VALUES (NULL, '[555]', ?, ?, ?, ?, ?, ?)";

    // ✅ 强烈建议升级为预处理语句(防注入+更安全)
    $stmt = $con->prepare($sql);
    $stmt->bind_param("ssssss", $DescriptionZ, $UnityZ, $quantityZ, $TextZ, $PurchaseQtyZ, $AmountZ);
    $result = $stmt->execute();

    if ($result) {
        echo "Data Saved Successfully";
    } else {
        echo "Failed to save data: " . $stmt->error;
    }
}

4. 额外优化建议

  • 移除冗余 HTML 属性:<form></form> 的 action 和 method 在纯 AJAX 场景下无需设置,可简化为 <form id="myform"></form>;
  • 添加加载状态反馈:点击按钮后禁用按钮并显示 loading,防止重复点击;
  • 服务端验证不可省略:前端清空 ≠ 数据有效,PHP 必须校验必填字段、类型、长度等。

通过以上修正,你的表单即可稳定支持无限次无刷新提交,同时大幅提升安全性与健壮性。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2340

2023.06.14

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.08.31

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2173

2023.11.15

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1141

2024.09.24

ThinkPHP表单验证与数据安全处理实战
ThinkPHP表单验证与数据安全处理实战

本专题聚焦 ThinkPHP 在表单处理中的验证与安全机制,系统讲解验证器使用、自定义规则、场景验证以及错误提示处理。内容涵盖 XSS 防护、SQL 注入防御、数据过滤与输入校验等关键安全措施。通过实际案例,帮助开发者构建安全可靠的数据处理流程。

181

2026.03.30

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

40

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

20

2026.09.23

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

20

2026.09.23

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

20

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
jQuery官方API文档
jQuery官方API文档

共0课时 | 0人学习

Symfony教程(入门篇+基础篇)
Symfony教程(入门篇+基础篇)

共18课时 | 1.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn