如何从维基百科API中提供来自多个网址(语言)的数据

时间:2017-12-01 17:52:36

标签: javascript jquery api wikipedia-api

我需要的一些数据仅在维基百科的es(西班牙语版本)中提供,这打破了我的脚本我正在使用这个小工具来调用数据,因为你可以看到来自https://en.wikipedia.org/w/api.php但是这个特定的数据仅可从https://es.wikipedia.org/w/api.php

获取

但是我仍然需要英文数据

那么如何将其转换为从两个API中获取我对JS的知识是最小的所以请在回复时记住这一点谢谢

    $.ajax({
    url: 'https://en.wikipedia.org/w/api.php',

    data: {
        format: 'json',
        action: 'parse',
        page: this_target,
        prop:'text',
        section:0,
    },
    dataType: 'jsonp',
    success: function (data) {
    //console.log(data)
    $(id_target).find('.o-modal__inner').html('');
    $(id_target).find('.o-modal__title').html('').hide();    
    $(id_target).find('.o-modal').addClass('isOpen');
    if(!$(id_target).find('.a-more').hasClass('isActive')){
        $(id_target).find('.a-more').trigger('click');
     }
    var markup = data.parse.text['*'];
    var i = $('<div></div>').html(markup);
    i.find('a').each(function() { $(this).replaceWith($(this).html()); });
    i.find('sup').remove();
    i.find('.mw-ext-cite-error').remove();
     setTimeout(function() {
        $(id_target).find('.o-modal__title').html( data.parse.title).fadeIn(300);
        $(id_target).find('.o-modal__inner').html($(i).find('p'));
        $(id_target).find('.a-loader').hide();
      }, 1000);
    }
});

});

1 个答案:

答案 0 :(得分:0)

您可以在data.error回调的顶部检查success,如果是,对于英文页面,只需更换子域即可重新发送ajax请求:

if (data.error && new URL(this.url).hostname === "en.wikipedia.org") {
    this.url = this.url.replace('en', 'es')
    $.ajax(this);
    return;
  } else if(data.error) {
    console.log('No data to display from both english & spanish wiki');
    return;
  }