从维基百科获取 Api 个结果 - 错误
Fetch Api results from Wikipedia - error
我必须写一个代码,从维基百科获取信息,我写了这个:
function getInfo() {
let search = "Teatr Wielki";
fetch("https://en.wikipedia.org/w/api.php?&origin=*&action=opensearch&search=" + search + "&limit=5", {
headers: {
'Accept': 'application/json',
},
}).then(response => response.json())
.then(addInfo)
.catch (e => requestError(e));
function addInfo(data) {
console.log(data);
const info = data.results[3][1];
if (info) {
document.querySelector('#results').innerHTML = info;
} else {
document.querySelector('#results').innerHTML = 'Unfortunately, no info was returned for this data.'
}
}
function requestError(e, part) {
console.log(e);
document.querySelector('#results').innerHTML = '<br>Oh no! There was an error making a request for this place';
}
}
但是这段代码returns出错了:
TypeError: Cannot read property '3' of undefined at addInfo.
我尝试使用许多选项,例如:仅 [0]、仅 [1] - 但没有任何效果。也许你们中的一些人知道我的代码有什么问题?
感谢您的每一次提示。
从维基百科 (mediawiki) api 返回的数据没有 results
键。服务器的响应是单个数组。
因此,要获取结果,在您的代码中,您必须按下 results
键并直接访问数据对象:
const info = data[3][1];
我必须写一个代码,从维基百科获取信息,我写了这个:
function getInfo() {
let search = "Teatr Wielki";
fetch("https://en.wikipedia.org/w/api.php?&origin=*&action=opensearch&search=" + search + "&limit=5", {
headers: {
'Accept': 'application/json',
},
}).then(response => response.json())
.then(addInfo)
.catch (e => requestError(e));
function addInfo(data) {
console.log(data);
const info = data.results[3][1];
if (info) {
document.querySelector('#results').innerHTML = info;
} else {
document.querySelector('#results').innerHTML = 'Unfortunately, no info was returned for this data.'
}
}
function requestError(e, part) {
console.log(e);
document.querySelector('#results').innerHTML = '<br>Oh no! There was an error making a request for this place';
}
}
但是这段代码returns出错了:
TypeError: Cannot read property '3' of undefined at addInfo.
我尝试使用许多选项,例如:仅 [0]、仅 [1] - 但没有任何效果。也许你们中的一些人知道我的代码有什么问题? 感谢您的每一次提示。
从维基百科 (mediawiki) api 返回的数据没有 results
键。服务器的响应是单个数组。
因此,要获取结果,在您的代码中,您必须按下 results
键并直接访问数据对象:
const info = data[3][1];