Ajax查询JSON数据不返回数据

时间:2017-03-30 03:14:21

标签: javascript jquery json ajax

我试图使用世界银行的API获取一些数据。 This is how to query their database.基本上要查询某个国家/地区的信息,我需要转到此网址:

http://api.worldbank.org/countries/"alpha2Code of the country"

在我的代码(Link to CodePen code.)中,我使用上一个查询中的alpha2Code添加到World Bank查询的URL。这是方法:

getDetails(alpha2Code) {
  this.load('http://api.worldbank.org/countries/'+alpha2Code)
    .then((countryDetails) => {
      this.generateOverlay(countryDetails);
    });
},

load()方法在这里定义:

load(url, type = 'json') {
  return $.ajax({
    dataType: type,
    url: url,
  });
},

根据世界银行的基本通话格式,我需要添加

format=json

以便在JSON中接收响应。不知怎的,我不认为它实际上从WorldBank获得了任何东西。

向世界银行提出的查询是为了向我提供详细信息,以便在点击后放入覆盖国家/地区标志的叠加层。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您共享的CodePen存在的一个问题是,您的网站可能存在问题,也可能不存在问题,因为CodePen演示是通过HTTPS加载的,但是您正在请求不安全的资源(HTTP)。浏览器不喜欢这样,通常会阻止它。

不幸的是,您不能将请求更改为HTTPS,因为WorldBank API没有整理其证书,因此这些请求也会被浏览器阻止。一种解决方案是通过HTTP加载您的站点;但是,如果您的页面包含任何用户敏感信息,这显然是不可取的。

更好的方法是使用您自己的后端服务器作为代理。您可以在服务器上设置自己的API,通过HTTP查询WorldBank API,然后通过HTTPS响应您的请求。当然,这假设你可以控制你的后端,但并非总是如此。

答案 1 :(得分:0)

您需要在查询中传递所需的结果格式。例如,要查询INDIA,您需要将网址更改为:

http://api.worldbank.org/countries/IN?format=json

收到的结果数据如下:

[{"page":1,"pages":1,"per_page":"50","total":1},[{"id":"IND","iso2Code":"IN","name":"India","region":{"id":"SAS","value":"South Asia"},"adminregion":{"id":"SAS","value":"South Asia"},"incomeLevel":{"id":"LMC","value":"Lower middle income"},"lendingType":{"id":"IBD","value":"IBRD"},"capitalCity":"New Delhi","longitude":"77.225","latitude":"28.6353"}]]

默认输出为XML格式。因此,您的代码可能无法正常工作。