
本文介绍一种轻量、标准且无需 websocket 或第三方库的方案:使用 javascript 的 `fetch` + `formdata` 发送 json 序列化对象,配合 php 后端接收并响应,适用于实时性要求不高的跨设备通信场景(如简易位置共享游戏)。
在 Web 开发中,若需将客户端生成的数据(例如玩家坐标、状态对象等)发送至另一台计算机(即服务端),而明确排除 WebSocket、Socket.IO 等长连接方案,最可靠、兼容性最佳的选择是基于 HTTP 的传统请求机制——尤其是现代浏览器广泛支持的 fetch() API 配合表单式数据提交。
核心思路是:将结构化数据(如数组或对象)序列化为 JSON 字符串,通过 FormData 封装为标准表单字段,再以 POST 请求发送至 PHP 后端;PHP 解析该字符串后可进一步处理、存储或转发给其他客户端。
以下是一个完整、可立即运行的示例:
✅ 前端(index.html):发送位置数据
位置发送端
✅ 后端(receive.php):接收并解析数据
⚠️ 关键注意事项
-
同源限制:上述示例默认要求前端 HTML 与 PHP 文件部署在同一域名/端口下(如 http://localhost/)。若需跨域(如两台不同电脑访问),需在 PHP 中添加 CORS 头:
header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: POST"); header("Access-Control-Allow-Headers: Content-Type"); - 安全性提醒:生产环境切勿直接 echo $_POST['xxx'];所有输入必须校验类型、范围与合法性,JSON 解码后应检查关键字段是否存在且符合预期结构。
- 扩展性说明:此模式天然支持“一对多”广播——PHP 接收后可将数据写入文件、数据库或 Redis,再由其他客户端定时轮询(如 setInterval(() => fetch('/get-latest.php'), 1000))拉取最新状态,实现类实时同步。
- 替代方案对比:相比 AJAX + application/json(需设置 Content-Type 且部分旧版 PHP 需手动读取 php://input),FormData 方式更兼容、无需额外配置,尤其适合初学者快速验证逻辑。
该方案零依赖、纯原生、易调试,是构建轻量级多人互动应用(如双人协作绘图、回合制地图共享、教育类协同实验)的理想起点。










