向后端发起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>
相关推荐
Learner5 分钟前
Python异常处理
java·前端·python
tao3556679 分钟前
VS Code登录codex,报错(os error 10013)
java·服务器·前端
superman超哥9 分钟前
Context与任务上下文传递:Rust异步编程的信息高速公路
开发语言·rust·编程语言·context与任务上下文传递·rust异步编程
步达硬件10 分钟前
【Matlab】批量自定义图像处理
开发语言·matlab
军军君0112 分钟前
Three.js基础功能学习七:加载器与管理器
开发语言·前端·javascript·学习·3d·threejs·三维
哈__13 分钟前
React Native 鸿蒙开发:内置 Share 模块实现无配置社交分享
javascript·react native·react.js
liulilittle14 分钟前
OPENPPP2 网络驱动模式
开发语言·网络·c++·网络协议·信息与通信·通信
JarvanMo14 分钟前
情迷服务器驱动 UI:我在 Flutter 开发中的爱与哀愁
前端
tzy23317 分钟前
分享一个 HTTP(S) 代理&抓包工具,拦截和Mock Web客户端请求和服务端响应
前端·网络协议·http
mjhcsp17 分钟前
C++ AC 自动机:原理、实现与应用全解析
java·开发语言·c++·ac 自动机