我正试图通过AJAX从维基百科中获取一些数据。在摆弄API一段时间后,我到了我的请求URL实际显示我需要的内容,即某个部分的文本。但我的AJAX请求无法返回它。这是我的功能:
function getSectionText(page, section) {
$.getJSON(
'http://en.wikipedia.org/w/api.php?action=query', {
prop: 'revisions',
rvlimit: '1',
rvsection: section,
rvprop: 'content',
format: 'json',
titles: page
},
function(data) {
return data;
}
)
}
这与起源无关,因为我使用Chrome的JS控制台从维基百科页面启动我的功能。然而,当我写var someVariable = getSectionText(wgPageName, someNumber)
,然后尝试拨打someVariable
时,Chrome称其为“未定义”。求救!
答案 0 :(得分:2)
AJAX是异步的!您无法从$.getJSON
返回数据。您需要在回调中执行与返回的JSON相关的所有操作。
function getSectionText(page, section) {
$.getJSON(
'http://en.wikipedia.org/w/api.php?action=query', {
prop: 'revisions',
rvlimit: '1',
rvsection: section,
rvprop: 'content',
format: 'json',
titles: page
},
function(data) {
console.log(data);
}
);
}
或者,您可以使用返回的promise
对象,并附加回调。
function getSectionText(page, section) {
return $.getJSON(
'http://en.wikipedia.org/w/api.php?action=query', {
prop: 'revisions',
rvlimit: '1',
rvsection: section,
rvprop: 'content',
format: 'json',
titles: page
}
);
}
getSectionText('User:Bluefire272', 1).done(function(data){
// You can use your data here
})