使用Fetch获取Token时变量undefined问题求助
问题原因及解决方案
核心问题
你的PHP代码返回的是纯Token字符串的JSON格式(比如"abcdef123456"),但前端代码试图从一个包含token字段的对象中解构取值,自然会拿到undefined。
两种解决方法
方法一:修改PHP代码(推荐,符合接口规范)
将返回内容包装成包含token字段的对象,匹配前端的解构逻辑:
public function generateToken() { $token = token(); if($token){ echo json_encode(['token' => $token]); // 把Token包装到对象的token字段中 exit; } }
方法二:修改前端代码(适配现有PHP返回格式)
直接接收返回的字符串,无需解构对象:
fetch(baseUrl+`generate-token?exp=86400`, { method: "GET", } ) .then((res) => res.json()) .then((token)=>{ // 直接接收返回的Token字符串 console.log(token); // 此时token即为生成的令牌 });
额外验证点
如果修改后仍有问题,检查以下内容:
- 打开浏览器控制台的Network面板,确认该请求的Response返回内容是否符合预期(是对象还是字符串)
- 检查是否存在跨域报错(控制台会有CORS相关提示)
- 确认
token()函数确实返回了有效的字符串值
内容的提问来源于stack exchange,提问作者user3653474
相关产品推荐
相关产品推荐

