2017-07-08 115 views
0

我试图做这家伙说已经采用了棱角分明做了this SO question如何按日期范围和地点搜索维基百科?

他的代码的推移:

.controller('WikiQueryCtrl', ['$scope', '$http', function($scope, $http) { 
    $http({ 
      //these geo coordinates and the date ranges will eventually be dynamic. 
      url: 'https://wdq.wmflabs.org/api?q=AROUND[625,-25.911389,31.957222,5]%20AND%20BETWEEN[585,1985,1987]&callback=JSON_CALLBACK', 
      method: 'jsonp' 
     }) 
     .success(function(response) { 
      var items = response.items; 
      $scope.jason = items; 
      var wikiDataString = 'http://www.wikidata.org/w/api.php?action=wbgetentities&format=json&ids=Q' + items + '&props=sitelinks%7Csitelinks%2Furls&callback=JSON_CALLBACK'; 
      $http({ 
        url: wikiDataString, 
        method: 'jsonp' 
       }) 
       .success(function(response2) { 
        $scope.jason2 = response2; 
        var url = response2.entities["Q" + items].sitelinks.enwiki.url; 
        var wikipediaTitle = url.substr(24, url.length); 
        var wikipediaURL = 'http://en.wikipedia.org/w/api.php?action=query&prop=extracts|info&exintro&titles=' + wikipediaTitle + '&format=json&explaintext&redirects&inprop=url&indexpageids&format=json&callback=JSON_CALLBACK'; 
        $http({ 
         url: wikipediaURL, 
         method: 'jsonp' 

        }).success(function(response4) { 
         var query = response4.query; 
         var pageID = response4.query.pageids; 
         var title = response4.query.pages[pageID].title; 
         var fullurl = response4.query.pages[pageID].fullurl; 
         var content = response4.query.pages[pageID].extract; 
         $scope.title = title; 
         $scope.content = content; 
         $scope.fullurl = fullurl; 
         $scope.jason = query; 
        }); 
       }); 
     }); 
}]); 

我知道维基百科有一个geosearch而不是日期范围,我想看看wikidata的家伙已经完成,将其转换为jQuery的,但没有积极的结果,这是一个代码笔:

https://codepen.io/anon/pen/PjywjR

将如何我在jQuery中实现了这个人使用Angular所取得的成就,通过坐标和日期范围来搜索wikipedia内容。

+0

一个建议:删除引用的代码(链接到)并粘贴你的代码(在codepen.io链接)。 – klenwell

回答

0

我没有与维基百科API合作,并且URL https://wdq.wmflabs.org在浏览器和AJAX请求中都给出了502代码。所以第一个问题是:你确定这是一个有效的API端点吗?

var url = "https://wdq.wmflabs.org/api"; 
var data = { 
    q: "AROUND[625,-25.911389,31.957222,5]%20AND%20BETWEEN[585,1985,1987]", 
    callback: "JSON_CALLBACK" 
}; 

$.ajax({ 
    dataType: "jsonp", 
    url: url, 
    data: data, 
    success: function(data) { 
    console.log(data); 
    } 
}); 

如上所述,这一请求接收目前一个502错误网关响应:

接下来,当你测试和调试我想简化AJAX请求。