0

我正在尝试通过 AJAX 从 Wikipedia 获取一些数据。在摆弄 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 控制台从 Wikipedia 页面启动我的函数。然而,当我写var someVariable = getSectionText(wgPageName, someNumber),然后尝试调用someVariable时,Chrome 说它是“未定义的”。请帮忙!

示例 URL:我的沙盒,第一部分

4

1 回答 1

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
})
于 2012-09-21T17:12:31.637 回答