JQuery getJSON不起作用

时间:2012-09-21 17:10:52

标签: jquery ajax mediawiki-api

我正试图通过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称其为“未定义”。求救!

示例网址:my sandbox, first section

1 个答案:

答案 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
})