0

我正在尝试使用WorldBank API获取数据。我正在进行的网络服务调用是this。此代码不起作用。

$.ajax({
  type: 'GET',
  url: 'http://api.worldbank.org/countries/indicators/3.1_LOW.SEC.NEW.TEACHERS?per_page=50&date=1960:2013&format=json',
  jsonpCallback: 'jsonCallback',
  contentType: "application/json",
  dataType: 'jsonp',
  success: function(data) {
     console.log(data);
  },
  error: function(e) {
     console.log(e.message);
  }
});

任何帮助,将不胜感激!

4

2 回答 2

3

JSON并且JSONP是完全不同的东西。您要求它提供 JSON,但告诉 jQuery 您要求提供 JSONP。所以这行不通。

如果您告诉它,它确实支持 JSONP 。您应该使用format=jsonPprefix=the_name_of_your_callback。由于您希望 jQuery 控制回调名称,您将希望jsonp参数告诉它 API 使用非标准prefix参数(而不是标准参数callback)。

$.ajax({
  url: 'http://api.worldbank.org/countries/indicators/3.1_LOW.SEC.NEW.TEACHERS?per_page=50&date=1960:2013&format=jsonP',
  jsonp: 'prefix',
  dataType: 'jsonp',
  success: function(data) {
     console.log(data);
  },
  error: function(e) {
     console.log(e.message);
  }
});

工作示例| 资源

以上注意事项:

  • 已删除type: "GET"。JSONP始终 GET是.
  • 在网址中更改format=json为。format=jsonP
  • 已删除jsonpCallback: 'jsonpCallback'。该参数告诉 jQuery 为回调函数使用特定名称,这是我们不想要的。
  • 添加jsonp: 'prefix',它告诉 jQuery 在查询字符串中使用哪个参数作为回调函数的名称。它使用的 API 文档,prefix而不是更标准的callback.
  • 已删除contentType: "application/json"。您不是在发送JSON,而是希望收到JSON。
于 2013-05-21T08:52:34.923 回答
0

网络服务可以不支持 JSONP 吗?

是的。Web 服务可以支持(或不支持)它喜欢的任何数据格式。

您请求的 URL 返回 JSON,而不是 JSONP。

于 2013-05-21T08:52:55.637 回答