如何在生成 QR 码的同时将表单数据保存为本地 TXT 文件

霞舞

霞舞

2026-07-08

598人浏览

原创

本文详解如何在一个 HTML 页面中同时实现:① 通过按钮生成基于表单输入的 QR 码(使用 Google Charts API),② 另一按钮一键导出结构化数据为 .txt 文件;重点解决表单默认提交行为导致 QR 生成功能失效的问题。

本文详解如何在一个 html 页面中同时实现:① 通过按钮生成基于表单输入的 qr 码(使用 google charts api),② 另一按钮一键导出结构化数据为 `.txt` 文件;重点解决表单默认提交行为导致 qr 生成功能失效的问题。

在实际开发中,常需将用户输入信息以多种方式持久化或可视化——例如生成 QR 码便于快速扫码读取,同时保存原始文本用于归档或审核。但初学者常遇到一个典型问题:当两个功能共存于同一

内时,点击“生成 QR”按钮会触发表单默认提交(页面刷新或跳转),导致 JavaScript 逻辑中断,QR 码无法渲染。

根本原因在于:HTML 表单内任意

✅ 正确解法是阻止表单默认提交行为。只需在事件处理函数中调用 event.preventDefault() 即可:

<script>
$(document).ready(function () {
    $('#generate').click(function (event) {
        event.preventDefault(); // ✅ 关键修复:阻止表单提交

        const input1 = $('#input1').val().trim();
        const input2 = $('#input2').val().trim();
        const input3 = $('#input3').val().trim();
        const input4 = $('#input4').val().trim();
        const principioActivo = $('#principio-activo').val().trim();

        // 构建结构化数据对象(含所有字段,增强可读性)
        const data = {
            codigo: input1,
            laboratorio: input2,
            producto: input3,
            precio: input4,
            principioActivo: principioActivo
        };

        // 序列化为 JSON 字符串并编码,确保 URL 安全
        const jsonStr = JSON.stringify(data);
        const qrCodeUrl = `https://chart.googleapis.com/chart?cht=qr&chl=${encodeURIComponent(jsonStr)}&chs=200x200&chld=L`;

        // 渲染 QR 图片到指定容器
        $('#qrcode').html(`<img src="${qrCodeUrl}" alt="QR Code" class="qr-code">`);
    });
});
</script>

? 注意细节优化

PHP的二维码生成库
PHP的二维码生成库

PHP的二维码生成库

下载
  • 使用 .trim() 清除首尾空格,避免生成空白 QR 或脏数据;
  • 为 chld=L 参数添加容错等级(L=低纠错),提升扫码鲁棒性;
  • 添加 class="qr-code" 以复用 CSS 样式,保持视觉一致性;
  • #qrcode 容器建议设为 display: flex; justify-content: center; 替代 float:left,避免布局塌陷。

对于“保存数据为 TXT”功能,原代码已基本正确,但可进一步增强健壮性:

document.getElementById('submit-button').addEventListener('click', function () {
    const formData = {
        codigo: document.querySelector('[name=codigo]').value?.trim() || 'N/A',
        laboratorio: document.querySelector('[name=laboratorio]').value?.trim() || 'N/A',
        producto: document.querySelector('[name=producto]').value?.trim() || 'N/A',
        precio: document.querySelector('[name=precio]').value?.trim() || 'N/A',
        principioActivo: document.getElementById('principio-activo').value?.trim() || 'N/A'
    };

    const textContent = `Codigo: ${formData.codigo}
Laboratorio: ${formData.laboratorio}
Producto: ${formData.producto}
Precio: ${formData.precio}
Principio Activo:
${formData.principioActivo}`;

    const blob = new Blob([textContent], { type: 'text/plain;charset=utf-8' });
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = `qr_data_${new Date().toISOString().slice(0,10)}.txt`; // 带日期的文件名,避免覆盖
    a.style.display = 'none';
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
    URL.revokeObjectURL(url);
});

? 关键总结

  • ✅ 所有表单内非提交用途的按钮,必须显式声明 type="button" 或在 JS 中 preventDefault();
  • ✅ QR 数据建议使用 JSON 格式封装,语义清晰且易于后续解析;
  • ✅ TXT 导出应做空值兜底(|| 'N/A')和 UTF-8 编码声明,确保中文不乱码;
  • ⚠️ Google Charts API 已进入维护模式,生产环境推荐迁移到 qrcode.jsQRCode.js 等客户端生成方案,避免依赖外部服务。

至此,两个功能完全解耦、互不干扰:点击「Guardar Datos」导出纯文本,点击「Generar Qr」实时渲染二维码,真正实现“一表双用”。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
ajax教程
ajax教程

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

2023.06.14

1144

4

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

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

2023.08.31

319

5

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

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

2023.11.15

1039

5

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

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

2024.09.24

918

6

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

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

2026.03.30

96

20

Selenium WebDriver元素定位与页面操作教程
Selenium WebDriver元素定位与页面操作教程

本专题整理Selenium WebDriver元素定位、XPath、CSS Selector、等待机制、窗口切换、Frame处理、Alert弹窗、Cookie操作和文件上传等核心用法。

2026.08.05

0

26

Selenium Grid分布式测试与并行执行教程
Selenium Grid分布式测试与并行执行教程

本专题整理Selenium Grid架构、远程WebDriver、并行测试、Docker部署、Kubernetes动态Grid、浏览器矩阵和测试环境扩展方法,适合进阶自动化测试团队使用。

2026.08.05

0

18

Selenium常见报错排查与自动化测试稳定性
Selenium常见报错排查与自动化测试稳定性

本专题整理Selenium常见报错、驱动版本问题、元素找不到、点击失败、等待超时、浏览器闪退、脚本不稳定和测试用例维护方法。

2026.08.05

0

17

墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

11

21

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习