2017-04-04 9 views
0

私はAPIを使用してWikipediaからデータを取り出そうとしています。Javascript Wikipedia概要抽出エラー

$(document).ready(function() { 
 
    var searchTerm = document.title; 
 
    $.getJSON("https://en.wikipedia.org/w/api.php?action=parse&page=" + searchTerm + '&prop=text&format=json&callback=?', function(json) { 
 
    $('#wikiInfo').html(json.parse.text['*']); 
 
    $("#wikiInfo").find("a:not(.references a)").attr("href", function() { 
 
     return "http://www.wikipedia.org" + $(this).attr("href"); 
 
    }); 
 
    $("#wikiInfo").find("a").attr("target", "_blank"); 
 
    }); 
 
});
<title>Fire</title> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div id="wikiInfo"> &nbsp; </div>

しかし、これは私にページ全体を与え、私は私のWikiのちょうど概要を与える何かを探しています:ここで

は、最初のコードのスナップがありますページ。 私はオンラインを見て、解決策は、初期パラメータの一部を変更し、JSは次のように見えるようにすることを示唆した。しかし、今、私はエラーに直面

var searchTerm = document.title; 
$.getJSON("https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&titles=" +searchTerm +'&callback=?', function(json) { 
    $('#wikiInfo').html(json.parse.text['*']); 
    $("#wikiInfo").find("a:not(.references a)").attr("href", function(){ return "http://www.wikipedia.org" + $(this).attr("href");}); 
    $("#wikiInfo").find("a").attr("target", "_blank"); 
}); 

Uncaught TypeError: Cannot read property 'text' of undefined 
    at Object.success (wikis.html:9) 
    at c (jquery.min.js:3) 
    at Object.fireWith [as resolveWith] (jquery.min.js:3) 
    at k (jquery.min.js:5) 
    at HTMLScriptElement.n.onload.n.onreadystatechange (jquery.min.js:5) 

誰かが私を助けてもらえ正確に何を変更する必要がありますか? JSONデータの処理とAPIの使用が新しくなった

答えて

1

要約のためにページ抽出を取得できます。唯一の欠点は、抽出が平文であることです。

最後にコードの一部をjQueryプラグインに変えて再利用しました。

var apiUrl = 'https://en.wikipedia.org/w/api.php'; 
 

 
(function($) { 
 
    $.fn.fixWikiLinks = function() { 
 
    this.find('a:not(.references a)').attr('href', function() { 
 
     return 'http://www.wikipedia.org' + $(this).attr('href'); 
 
    }); 
 
    return this; 
 
    }; 
 
    $.fn.setAnchorTargetsBlank = function() { 
 
    this.find('a').attr('target', '_blank'); 
 
    return this; 
 
    }; 
 
})(jQuery); 
 

 
$(document).ready(function() { 
 
    var searchTerm = document.title; 
 
    var params = { 
 
    "format"  : "json", 
 
    "action"  : "query", 
 
    "prop"  : "extracts", 
 
    "exintro"  : null, 
 
    "explaintext" : null, 
 
    "titles"  : searchTerm, 
 
    "callback" : "?" 
 
    }; 
 

 
    $.ajax({ 
 
    url: apiUrl + '?' + $.param(params), 
 
    cache: true, 
 
    dataType: 'jsonp', 
 
    success: function(json) { 
 
     var pages = json['query']['pages']; 
 
     var pageIds = Object.keys(pages); 
 

 
     if (pageIds.length > 0) { 
 
     var initialPageId = pageIds[0]; 
 
     var page = pages[initialPageId]; // Get first page. 
 
     var extract = page['extract']; 
 

 
     $('#wikiInfo').html(extract).fixWikiLinks().setAnchorTargetsBlank(); 
 
     } 
 
    } 
 
    }); 
 
});
<title>Fire</title> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div id="wikiInfo"> &nbsp; </div>

+0

ありがとうございました!これは私のために働く:) – Appstarter

関連する問題