2012-09-21 91 views
0

我想通過AJAX從維基百科獲取一些數據。經過一段時間的API調整後,我的請求URL實際上顯示了我需要的內容,這是來自特定部分的文本。但我的AJAX請求無法返回它。這裏是我的功能:JQuery getJSON不起作用

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

+0

嘗試將您的數據對象記錄到控制檯並檢查您得到的結果。 console.log(data) –

回答

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 
}) 
+0

示例代碼pl0x – Bluefire

+0

@Bluefire:檢查編輯的答案。 –

+0

console.log()做了什麼:o – Bluefire