调用Wikipedia API返回异常,无法获取目标JSON数据求助
解决维基百科API请求返回CORS响应但无法获取JSON数据的问题
看起来你碰到的是浏览器CORS机制下的响应解析问题——虽然状态码显示200(请求成功),但实际拿不到预期的JSON数据,我帮你一步步排查解决:
1. 先修正你的请求URL
从你给出的响应URL能看到两个明显问题:
- 重复了
format=json参数(URL里出现了两次) - 代码里的URL末尾有多余的
...截断符号
正确的完整请求URL应该是这样的:
let link = `https://en.wikipedia.org/w/api.php?action=opensearch&search=google&limit=20&namespace=0&format=json&origin=*&utf8=`;
注意:每个参数只保留一次,去掉无效的截断符号...,避免URL格式错误导致API返回异常。
2. 正确处理Fetch响应的解析
即使请求状态是200,你需要显式调用response.json()来把响应体解析成JSON对象,而不是直接使用原始响应。完整的请求代码示例:
let link = `https://en.wikipedia.org/w/api.php?action=opensearch&search=google&limit=20&namespace=0&format=json&origin=*&utf8=`; fetch(link) .then(response => { // 先确认请求真的成功 if (!response.ok) { throw new Error(`请求失败: ${response.status}`); } // 解析响应为JSON格式 return response.json(); }) .then(data => { // 这里就能拿到你需要的维基百科数据了 console.log("获取到的搜索结果:", data); }) .catch(error => { // 捕获所有错误,包括CORS、解析失败等 console.error("请求出错:", error); });
3. 额外排查点
如果按照上面的步骤调整后还是有问题,打开浏览器的开发者工具(F12),切换到Console标签:
- 查看是否有具体的JSON解析错误提示(比如返回内容格式无效)
- 确认是否有CORS相关的警告(虽然维基API支持CORS,但参数错误也可能触发异常)
内容的提问来源于stack exchange,提问作者Zeyad
相关产品推荐
相关产品推荐

