我正在尝试用 JavaScript 编写一个程序,用户在搜索栏中输入一些内容,该程序会返回前 3 个维基百科结果以及每个结果的简短描述。我可以成功获取搜索结果并使用以下语法返回标题:
articles1.append(x.query.search[0].title);
但是,虽然 MediaWiki 站点 ( https://www.mediawiki.org/wiki/API:Parsing_wikitext ) 让我相信“text”可以用作类似于“title”的参数,但以下内容不会返回任何内容:
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 );
}
})
})
})
最佳答案
Parsing WikiText您所指的页面解释了如何解析任意维基文本。此处不相关。
您正在使用 Search API ,并且只能使用该模块返回的属性。在这种情况下,您可能正在寻找 snippet
属性:
articles1.append( x.query.search[0].snippet );
看看Search API有关更多选项的文档。
<小时/>附注您还可以使用 MediaWiki's API Sandbox尝试并测试您的 API 请求。
关于javascript - 通过 MediaWiki API 从文章返回文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37011423/