2016-05-03 13 views
1

Ich versuche, ein Programm in JavaScript zu schreiben, wo der Benutzer etwas in eine Suchleiste eingibt, und das Programm gibt die Top 3 Wikipedia-Ergebnisse und eine kurze Beschreibung von jedem zurück. Ich kann erfolgreich ein Suchergebnis nehmen und die Rück Titel mit folgenden Syntax:Text vom Artikel über MediaWiki API zurückgeben?

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

Während jedoch die MediaWiki-Website (https://www.mediawiki.org/wiki/API:Parsing_wikitext) führt mich zu glauben, dass „Text“ kann ähnlich wie „Titel als Parameter verwendet werden, "Folgendes gibt nichts zurück:

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

Das gleiche gilt für" Zusammenfassung "oder einen der anderen aufgeführten Parameter. Ich habe das Gefühl, dass ich grundsätzlich missverstehen kann, wie diese Parameter funktionieren sollen, aber da ich die gewünschten Titel zumindest erfolgreich ergattern kann, habe ich das Gefühl, dass ich nicht zu weit weg sein kann. Jede Hilfe ist willkommen, vollständige Code ist unten:

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

Versuchen Sie, in der Erfolgsfunktion Ihrer AJAX-Anfrage x auf der Konsole zu protokollieren. Dadurch können Sie die Form des Objekts erkunden, die Ihnen genau sagen sollte, was verfügbar ist und wie Sie darauf zugreifen können. –

Antwort

1

Die Parsing WikiText Seite, die Sie sich beziehen, erklärt, wie willkürlich wikitext zu analysieren. Es ist hier nicht relevant.

Sie verwenden Search API und dürfen nur die zurückgegebenen Eigenschaften dieses Moduls verwenden. In diesem Fall könnte der Suche nach der snippet Eigenschaft:

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

Blick auf die Search API Dokumentation für weitere Optionen.


P.S. Sie können auch MediaWiki's API Sandbox verwenden, um Ihre API-Anfragen zu testen und zu testen.

Verwandte Themen