如何实现POST数据读取、条件判断及响应返回?前后端猜数字游戏开发
简易猜数字前后端通信实现方案
刚好做过类似的小demo,给你一套完整的简易实现方案,前端用原生JS,后端用Node.js+Express,都是最基础的写法,容易理解和修改:
后端实现(Node.js + Express)
先快速搭建处理POST请求的服务器,核心是生成随机数、读取前端发送的猜测值并做判断:
- 初始化项目(如果还没搭建):
npm init -y npm install express cors
- 编写服务器代码(保存为
server.js):
const express = require('express'); const cors = require('cors'); const app = express(); const port = 3000; // 生成1-10000的随机秘密数字 let secretNumber = Math.floor(Math.random() * 10000) + 1; console.log(`当前秘密数字:${secretNumber}`); // 开发时方便查看,上线可移除 // 允许跨域请求,避免前端被浏览器拦截 app.use(cors()); // 解析JSON格式的请求体,这样才能读取前端发送的参数 app.use(express.json()); // 处理猜测请求的接口 app.post('/guess', (req, res) => { // 从POST请求体中获取用户输入的数字 const userGuess = parseInt(req.body.guess); // 先做参数验证:是否为有效数字,是否在1-10000范围内 if (isNaN(userGuess) || userGuess < 1 || userGuess > 10000) { return res.json({ status: 'error', message: '请输入1到10000之间的有效数字!' }); } // 判断猜测结果 let feedback = ''; if (userGuess > secretNumber) { feedback = '猜大了!'; } else if (userGuess < secretNumber) { feedback = '猜小了!'; } else { feedback = '恭喜你,猜对了!'; // 猜对后重置秘密数字,支持继续游戏 secretNumber = Math.floor(Math.random() * 10000) + 1; console.log(`新的秘密数字:${secretNumber}`); } // 返回结果给前端 res.json({ status: 'success', message: feedback }); }); // 启动服务器 app.listen(port, () => { console.log(`服务器运行在 http://localhost:${port}`); });
前端实现(原生HTML + JS)
写一个简洁的交互页面,包含输入框、提交按钮和结果展示区:
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>猜数字游戏</title> <style> .game-container { max-width: 450px; margin: 50px auto; padding: 25px; text-align: center; font-family: 'Arial', sans-serif; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); } #guess-input { padding: 10px; width: 180px; font-size: 16px; margin-right: 10px; border: 1px solid #ddd; border-radius: 4px; } #submit-btn { padding: 10px 20px; font-size: 16px; cursor: pointer; background-color: #3498db; color: white; border: none; border-radius: 4px; transition: background-color 0.3s; } #submit-btn:hover { background-color: #2980b9; } #result-display { margin-top: 25px; font-size: 1.3em; min-height: 30px; } .success { color: #27ae60; } .error { color: #e74c3c; } </style> </head> <body> <div class="game-container"> <h1>猜数字挑战(1-10000)</h1> <input type="number" id="guess-input" min="1" max="10000" placeholder="输入你的猜测"> <button id="submit-btn">提交猜测</button> <div id="result-display"></div> </div> <script> const guessInput = document.getElementById('guess-input'); const submitBtn = document.getElementById('submit-btn'); const resultDisplay = document.getElementById('result-display'); // 提交按钮点击事件 submitBtn.addEventListener('click', async () => { const guessValue = guessInput.value.trim(); // 前端先做基础验证,减少无效请求 if (!guessValue || isNaN(guessValue) || guessValue < 1 || guessValue > 10000) { showResult('请输入1到10000之间的有效数字!', 'error'); return; } try { // 发送POST请求到后端接口 const response = await fetch('http://localhost:3000/guess', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ guess: parseInt(guessValue) }), }); const responseData = await response.json(); // 根据服务器返回的结果展示信息 showResult(responseData.message, responseData.status); // 猜对后清空输入框 if (responseData.message.includes('恭喜')) { guessInput.value = ''; } } catch (err) { showResult('服务器连接失败,请检查服务器是否运行!', 'error'); console.error('请求出错:', err); } }); // 支持回车键提交 guessInput.addEventListener('keypress', (e) => { if (e.key === 'Enter') { submitBtn.click(); } }); // 统一结果展示函数 function showResult(message, type) { resultDisplay.textContent = message; resultDisplay.className = type; } </script> </body> </html>
运行步骤
- 启动后端:在终端进入项目目录,运行
node server.js - 打开前端:直接把前端HTML文件拖进浏览器即可(无需额外前端服务器)
- 开始游戏:输入1-10000的数字,点击提交或按回车,根据反馈调整猜测
这套方案完全满足你的需求:前端发送用户猜测的数字,后端读取POST数据、判断高低关系并返回响应,逻辑清晰,没有复杂依赖,很适合入门学习前后端通信~
内容的提问来源于stack exchange,提问作者MountainConqueror
相关产品推荐
相关产品推荐

