You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现POST数据读取、条件判断及响应返回?前后端猜数字游戏开发

简易猜数字前后端通信实现方案

刚好做过类似的小demo,给你一套完整的简易实现方案,前端用原生JS,后端用Node.js+Express,都是最基础的写法,容易理解和修改:

后端实现(Node.js + Express)

先快速搭建处理POST请求的服务器,核心是生成随机数、读取前端发送的猜测值并做判断:

  1. 初始化项目(如果还没搭建):
npm init -y
npm install express cors
  1. 编写服务器代码(保存为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:51:43