向后端发起POST请求

1. 请求示例

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>获取SN码</title>
</head>

<body>
    <p3>查询参数:</p3>
    <input type="text" id="inpWorkCode" placeholder="生产工单号">
    <input type="number" id="inpQty" placeholder="获取条码数量"><br><br>
    <button id="btnGetSNList">点击获取SN码</button>
    <pre id="showSNList">数据显示区...</pre>

    <script>
        const baseURL = 'http://127.0.0.1:8080';
        const btnGetSNList = document.getElementById('btnGetSNList');
        const showSNList = document.getElementById('showSNList');
        const inpWorkCode = document.getElementById('inpWorkCode');
        const inpQty = document.getElementById('inpQty');

        // 向后端发起请求
        btnGetSNList.addEventListener('click', function () {
            const workCode = inpWorkCode.value.trim();
            const qty = parseInt(inpQty.value);
            // 输入验证
            if (!workCode) {
                showSNList.textContent = '请输入生产工单号';
                return;
            }

            if (isNaN(qty) || qty <= 0) {
                showSNList.textContent = '请输入有效的获取条码数量(正整数)';
                return;
            }
            // 组装请求对象
            const requestObj = {
                workCode: 'CC-FG2512040003',
                qty: 3
            };

            fetch(`${baseURL}/api/Laser/GetLaserData`, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(requestObj)
            })
                .then(response => {
                    if (!response.ok) {
                        console.log(`发生错误!`);
                    }
                    return response.text();
                }).then(data => {
                    showSNList.textContent = data;
                }).catch(error => {
                    showSNList.textContent = error.message;
                })
        });




    </script>
</body>

</html>

2. 导出为.txt

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>获取SN码</title>
</head>

<body>
    <p3>查询参数:</p3>
    <input type="text" id="inpWorkCode" placeholder="生产工单号" value="CC-FG2512040003">
    <input type="number" id="inpQty" placeholder="获取条码数量" value="3"><br><br>
    <button id="btnGetSNList">点击获取SN码</button>
    <button id="btnExport" disabled>导出为TXT</button><br><br>
    <pre id="showSNList">数据显示区...</pre>

    <script>
        const baseURL = 'http://127.0.0.1:8080';
        const btnGetSNList = document.getElementById('btnGetSNList');
        const btnExport = document.getElementById('btnExport');
        const showSNList = document.getElementById('showSNList');
        const inpWorkCode = document.getElementById('inpWorkCode');
        const inpQty = document.getElementById('inpQty');

        // 存储请求到的数据,用于导出
        let currentData = null;
        let currentWorkCode = '';
        let currentQty = 0;

        // 向后端发起请求
        btnGetSNList.addEventListener('click', function () {
            // 获取输入值
            const workCode = inpWorkCode.value.trim();
            const qty = parseInt(inpQty.value);

            // 输入验证
            if (!workCode) {
                showSNList.textContent = '请输入生产工单号';
                btnExport.disabled = true;
                return;
            }

            if (isNaN(qty) || qty <= 0) {
                showSNList.textContent = '请输入有效的获取条码数量(正整数)';
                btnExport.disabled = true;
                return;
            }

            const requestObj = {
                workCode: workCode,
                qty: qty
            };

            fetch(`${baseURL}/api/Laser/GetLaserData`, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(requestObj)
            })
                .then(response => {
                    if (!response.ok) {
                        throw new Error(`HTTP错误!状态码:${response.status}`);
                    }
                    return response.json(); // 解析为JSON对象
                }).then(data => {
                    currentData = data;
                    currentWorkCode = workCode;
                    currentQty = qty;
                    showSNList.textContent = JSON.stringify(data, null, 2); // 格式化显示JSON
                    btnExport.disabled = false; // 启用导出按钮
                }).catch(error => {
                    showSNList.textContent = `请求失败:${error.message}`;
                    btnExport.disabled = true; // 禁用导出按钮
                    currentData = null;
                })
        });

        // 导出为TXT文件
        btnExport.addEventListener('click', function () {
            if (!currentData || !currentWorkCode) {
                showSNList.textContent = '没有可导出的数据';
                return;
            }

            try {
                // 解析数据
                const snList = currentData.Result || [];

                // 组织导出内容
                let content = '';
                // 前三行生产工单号
                content += `${currentWorkCode}\n`;
                content += `${currentWorkCode}\n`;
                content += `${currentWorkCode}\n`;
                // 后续为SN码
                snList.forEach(item => {
                    if (item.fCode) {
                        content += `${item.fCode}\n`;
                    }
                });

                // 生成文件名:年月日_生产工单号.txt
                const now = new Date();
                const year = now.getFullYear();
                const month = String(now.getMonth() + 1).padStart(2, '0');
                const day = String(now.getDate()).padStart(2, '0');
                const dateStr = `${year}${month}${day}`;
                const fileName = `${dateStr}_${currentWorkCode}_${currentQty}.txt`;

                // 创建并下载文件
                const blob = new Blob([content], { type: 'text/plain' });
                const url = URL.createObjectURL(blob);
                const a = document.createElement('a');
                a.href = url;
                a.download = fileName;
                document.body.appendChild(a);
                a.click();
                document.body.removeChild(a);
                URL.revokeObjectURL(url);

                showSNList.textContent += `\n\n文件已导出:${fileName}`;
            } catch (error) {
                showSNList.textContent += `\n\n导出失败:${error.message}`;
            }
        });
    </script>
</body>

</html>
相关推荐
掘了几秒前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
zmzb01032 分钟前
C++课后习题训练记录Day98
开发语言·c++
崔庆才丨静觅4 分钟前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅25 分钟前
5分钟快速搭建 AI 平台并用它赚钱!
前端
猫头虎1 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
崔庆才丨静觅1 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment1 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅1 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
YUJIANYUE1 小时前
PHP纹路验证码
开发语言·php
剪刀石头布啊1 小时前
jwt介绍
前端