javascript - 维基百科 API 解析操作仅返回 "other languages"部分

标签 javascript jquery json ajax mediawiki-api

我正在尝试显示随机的维基百科文章。我有一个随机页面 ID 的 ajax 请求和一个解析该页面 ID 文本的内部 ajax 请求。我每次都会得到一个随机页面 ID,但是当我尝试使用内部 ajax 请求显示它时,显示的只是“其他语言”部分。

我正在使用the call specified by the Wikipedia API sandbox ,但我没有得到与该页面上显示的相同结果。有什么见解吗?

这是我的功能:

$(document).ready(function () { //document.ready
  $('#random-btn').click(function() { //random-btn click
    $.ajax ({ //ajax random page 
      url: "http://www.mediawiki.org/w/api.php",
      jsonp: "callback",
      dataType: 'jsonp',
      data: {
        action: "query",
        format: "json",
        list: "random",
      },
      success: function (randomPage) { //random page success
        var randomID = randomPage.query.random[0].id.toString();
        console.log(randomID);
        $.ajax ({ //ajax display given page
          url: "http://www.mediawiki.org/w/api.php?action=parse&format=json&pageid=367435",
          jsonp: "callback",
          dataType: 'jsonp',
          data: {
            action: "parse",
            format: "json",
            pageids: randomID,
          },
          success: function (jsonObject) { //display success
            var displayText = jsonObject.parse.text["*"];
            $('#display').html(displayText);
          } //display success
        }) //ajax display given page
      } //random page success
    }) //ajax random page 
  }) //random-btn click
}) //document.ready 

最佳答案

您也可以通过使用 extracts 的生成器来完成这一切一次请求中的属性。检查参数以获取更多选项。

$(document).ready(function () {
    $('#random-btn').click(function () {
        $('#display').empty();
        $.ajax({
            url: 'http://www.mediawiki.org/w/api.php',
            dataType: 'jsonp',
            data: {
                action: 'query',
                format: 'json',
                generator: 'random',
                prop: 'extracts',
                grnnamespace: 0,
                explaintext: true
            },
            success: function (result) {
                var pages = result.query.pages;
                var page = pages[Object.keys(pages)[0]];
                $('#display').append($('<h2>').text(page.title));
                $('#display').append($('<p>').text(page.extract));
            }
        });
    });
});
<!DOCTYPE html>
<html>
<body>
    <button id="random-btn">Get random</button>
    <div id="display"></div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</body>
</html>

关于javascript - 维基百科 API 解析操作仅返回 "other languages"部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35800427/

相关文章:

javascript - Uncaught Error : Not enough space for Photobooth. 最小高度/宽度为 200 像素

Json.NET:反序列化嵌套的 Json

javascript - 当我按退格键时,逗号被插入输入框,数字没有按要求格式化

javascript - 当我们使用 JavaScript 单击下一个或上一个按钮时,图像幻灯片计时器速度会增加

javascript - 试图让 AngularJS/SCSS codepen 在本地运行......?

jquery - 获取根节点属性,jQuery/XML

javascript - 什么是 AWS S3 存储桶响应中的 Unit8Array

android - 如何获取存储在mysql中的经纬度并在android中的谷歌地图上显示

javascript - 当轮播到达末尾时停止滚动

javascript - 在谷歌地图上适合标记