我正在尝试使用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);
}
});
任何帮助将不胜感激!
答案 0 :(得分:3)
JSON
和JSONP
完全不同。你问它是为了JSON,但告诉jQuery你要求JSONP。所以这不会起作用。
如果您告诉它,它会support JSONP。您应该使用format=jsonP
和prefix=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。答案 1 :(得分:0)
网络服务可以不支持JSONP吗?
是。 Web服务可以支持(或不支持)它喜欢的任何数据格式。
您请求的URL是返回JSON,而不是JSONP。