【问题标题】:Getting an array of users that edited a page获取编辑页面的用户数组
【发布时间】:2013-10-04 13:49:13
【问题描述】:

我正在为 Wikia 社区 (http://c.wikia.com) 编写用户脚本,我需要获取页面的用户数组(可能还有修订 ID)。我想出了以下代码,但似乎无法使其工作。任何帮助将不胜感激。

代码:

var revisions = [];
$.getJSON('/api.php', {
    action: 'query',
    prop: 'revisions',
    titles: mw.config.get("wgPageName"),
    rvprop: 'user',
    rvlimit: '50',
    format: 'json'
}, function (result) {
    for (var i = 0; i < 50; i++) {
        var revision = result.query.pages.page[i].revisions.user;
        revisions.push(revision);
    }
    alert(revisions);
});

【问题讨论】:

  • 有什么问题?
  • 您遇到了什么错误(如果有)?
  • 问题是它没有返回任何东西,只是空白。
  • 听起来像是 api.php 或您正在发送(或不发送)的参数的问题
  • 不是你的情况,但那些有权访问 wiki 配置的人可以使用(如果禁用,则启用)action=credits。 mediawiki.org/wiki/Manual:Parameters_to_index.php#credits

标签: javascript jquery api mediawiki mediawiki-api


【解决方案1】:

查询结果如下所示:

{
  "query": {
    "pages": {
      "421588": {
        "pageid": 421588,
        "ns": 0,
        "title": "Community Central",
        "revisions": [
          {
            "user": "Mhadick"
          },
          {
            "user": "Nblonkenfeld"
          },
          …
        ]
      }
    }
  },
  …
}

您会注意到pages 是一个具有以当前页面的页面ID 命名的属性"421588" 的对象(从您的代码判断,您可能正在查看响应的XML 版本,您必须查看在 JSON)。为此,您可以使用以下内容:

var users = [];

$.getJSON('/api.php', {
    action: 'query',
    prop: 'revisions',
    titles: mw.config.get("wgPageName"),
    rvprop: 'user',
    rvlimit: '50',
    format: 'json'
}, function (result) {
    var revisions = result.query.pages[mw.config.get("wgArticleId")].revisions;

    $.each(revisions, function(key, revision) {
        users.push(revision.user);
    });

    alert(users);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多