上一篇
场景引入:
小明正在开发一个电商网站🛒,需要把用户勾选的商品列表(包含价格、数量等对象数据)实时传给后端计算总价,他抓耳挠腮:"用AJAX怎么传对象啊?后端又该怎么接?" 别急!这篇指南就是你的"传送门"🚪!
const order = { items: [ { id: 101, qty: 2 }, { id: 205, qty: 1 } ], coupon: "FESTIVAL2025" }; // 🚀 关键步骤:对象转JSON字符串 fetch('/api/checkout', { method: 'POST', headers: { 'Content-Type': 'application/json' // 必须声明! }, body: JSON.stringify(order) // 魔法发生在这里! });
const formData = new FormData(); formData.append('user', JSON.stringify({ name: "小明", level: "VIP" })); // 传统xhr方式演示 const xhr = new XMLHttpRequest(); xhr.open('POST', '/api/profile'); xhr.send(formData); // 无需手动设置Content-Type!
@PostMapping("/checkout") public ResponseEntity checkout(@RequestBody OrderDTO order) { // 自动反序列化JSON → 对象 System.out.println(order.getItems().get(0).getId()); return ResponseEntity.ok("结算成功!"); }
from flask import request, jsonify @app.route('/api/checkout', methods=['POST']) def checkout(): data = request.get_json() # 自动解析JSON print(data['coupon']) return jsonify({"status": "ok"})
Content-Type必须匹配:
application/json
→ 后端用@RequestBody
或request.get_json()
multipart/form-data
→ 用FormData
或普通表单处理 日期对象要特殊处理📅:
// 前端处理日期 order.date = new Date().toISOString();
null
✅ 检查:
JSON.stringify
Content-Type: application/json
✅ 解决方案:
// Spring Boot后端配置示例 @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedMethods("*"); } }
// 上传头像+用户信息 const formData = new FormData(); formData.append('avatar', fileInput.files[0]); formData.append('meta', JSON.stringify({ userId: 123, description: "夏日新头像~" })); // 发送混合数据 axios.post('/api/upload', formData);
2025年最新实践:现在主流框架(React/Vue等)基本都内置了AJAX封装工具,但底层原理仍是相通的✨,记住这个核心公式:
对象 → JSON字符串 → 网络传输 → 后端解析 → 新生对象
下次再遇到对象传递需求,你就是团队里的"AJAX魔法师"🧙♂️啦!
本文由 钊幻玉 于2025-08-02发表在【云服务器提供商】,文中图片由(钊幻玉)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/513077.html
发表评论