2016-05-03 9 views
1

私は、ユーザーが検索バーに何かを入力し、プログラムが上位3つのWikipediaの結果とそれぞれの短い説明を返すJavaScriptでプログラムを作成しようとしています。私は正常に検索結果を取得し、次の構文でタイトルを返すことができます。MediaWiki API経由で記事からテキストを返しますか?

articles1.append(x.query.search[0].title); 

しかし、MediaWikiのサイト(https://www.mediawiki.org/wiki/API:Parsing_wikitext)は、「テキストは」タイトル」に似たパラメータとして使用することができると信じて私をリードしながら、以下は何も返されません:

articles1.append(x.query.search[0].text); 

"要約"または記載されている他のパラメータについても同様です。私は、これらのパラメータがどのように機能するのかを根本的に誤解しているように感じるかもしれませんが、少なくとも要求されたタイトルをうまく掴むことができるので、私はあまり離れていないように感じます。すべてのヘルプは高く評価され、完全なコードは以下の通りです:

HTML:

<input type="text" value='' id=test > 
<button>Search</button> 

<section class='articles1'> 
1. 
</section> 
<section class='articles2'> 
2. 
</section> 
<section class='articles3'> 
3. 
</section> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

はJavaScript:

$(document).ready(function() { 
    var articles1 = $('.articles1'); 
    var articles2 = $('.articles2'); 
    var articles3 = $('.articles3'); 
    var input = $('input'); 
    var button = $('button'); 
    var toSearch = ''; 
    var searchUrl = 'https://en.wikipedia.org/w/api.php'; 

    $("button").click(function(e) { 
     var search = document.getElementById("test").value; 
     $.ajax({ 
      url: 'http://en.wikipedia.org/w/api.php', 
      data: { action: 'query', list: 'search', srsearch: search, format: 'json' }, 
      dataType: 'jsonp', 
      success: function(x) { 
       articles1.append(x.query.search[0].title); 
       articles2.append(x.query.search[1].title); 
       articles3.append(x.query.search[2].title); 
      } 
     }) 
    }) 
}) 
+0

ajaxリクエストの成功関数では、xをコンソールに記録してみてください。そうすれば、オブジェクトの形を調べることができます。オブジェクトの形やアクセス方法を正確に教えてください。 –

答えて

1

あなたが参照しているParsing WikiTextページには、任意のウィキテキストを解析する方法について説明します。ここでは関係ありません。

お客様はSearch APIを使用しており、返されたモジュールのプロパティのみを使用することができます。この例では、snippetプロパティを探している可能性があります:

articles1.append(x.query.search[0].snippet); 

より多くのオプションのためのSearch APIのドキュメントを見てください。


P.S. MediaWiki's API Sandboxを使用して遊んで、APIリクエストをテストすることもできます。

関連する問題