JS fetch()未获取预期响应体,但Chrome DevTools显示正常的问题排查
问题原因及解决方案
你的问题核心出在对fetch返回结果的处理逻辑上:
fetch请求完成后返回的不是服务器直接返回的数组数据,而是一个**Response对象**——这个对象存储的是请求的元信息(比如状态码、响应头),而非你需要的[0]或[1]这类实际响应内容。- 你直接调用
JSON.stringify(response),本质是序列化这个Response对象本身,自然得不到预期的数组,只会输出空对象或包含元数据的无关结构。
修正后的代码
function predict(values) { fetch(`https://darrendube.pythonanywhere.com/?${stringify(values)}`) .then((response) => { // 先验证请求是否成功(状态码处于200-299区间) if (!response.ok) { throw new Error('请求失败'); } // 调用json()解析响应体为JSON格式数据 return response.json(); }) .then((data) => console.log(data)) .catch((error) => console.error('请求出错:', error)); }
关键说明
response.json():这个方法会读取并解析服务器返回的JSON格式响应体,返回一个Promise,当解析完成后,就能拿到你预期的[0]或[1]数组。- 错误处理:增加
response.ok检查和catch块,能在请求失败时给出明确提示,避免无意义的报错信息,方便后续排查问题。
内容的提问来源于stack exchange,提问作者Darren Dube
相关产品推荐
相关产品推荐

