React TypeScript通过API向Laravel提交数据返回空值,Postman测试正常
问题排查与解决方案
1. 数据结构层级不匹配
你在React代码里把业务数据包裹在了value字段下:
body: JSON.stringify({ value: order }),
这导致实际提交的JSON结构是:
{ "value": { "id": "1", "first_name": "XXXX", "last_name": "XXXX", ... } }
而你用Postman测试时应该是直接提交了order本身的结构(没有外层value嵌套),所以Laravel代码里如果直接读取request('first_name')这类字段,自然拿不到值。
解决方法:
- 要么修改React代码,直接提交
order对象:body: JSON.stringify(order), - 要么修改Laravel代码,先获取
value对象再读取内部字段:$payload = request()->get('value'); $firstName = $payload['first_name']; // 或者直接用链式读取 request('value.first_name')
2. Authorization头格式错误
你的请求头里Authorization的写法存在格式问题:
Authorization: `Bearer:`+token,
标准的Bearer Token格式是Bearer [token内容],中间必须有空格,当前写法会变成Bearer:xxxxxx,Laravel无法正确解析令牌,可能导致认证失败后返回空响应。
解决方法:修正头信息格式:
Authorization: `Bearer ${token}`,
3. 跨域凭据配置问题
如果前后端域名不同,credentials: "same-origin"会限制凭据(如Cookie)的传递,即便你用了Bearer Token,也可以尝试调整配置:
credentials: "include",
同时确保Laravel的CORS配置文件(config/cors.php)中supports_credentials设置为true。
4. 直接验证Laravel的请求接收情况
可以在Laravel控制器的方法里先打印完整请求内容,快速定位问题:
public function addNewLead(Request $request) { // 打印所有接收的请求数据,确认结构是否正确 dd($request->all()); // 后续业务逻辑... }
通过这个方式能直接确认是数据没传送到后端,还是后端读取方式有误。
内容的提问来源于stack exchange,提问作者Mukhila Asokan
相关产品推荐
相关产品推荐

