0

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 はそれが「未定義」であると言います。助けてください!

URL の例: my sandbox, first section .

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 に答える