我可以使用$ .get()从ipinfo.io获取数据,如下所示:
$.get("http://ipinfo.io", function(response) {
alert(response.city);
}, "jsonp");
以上作品。但是当我尝试为此目的使用$ .getJSON时,我不再获取数据了。我的代码是:
$.getJSON(
"http://ipinfo.io/?callback=callback?", function(response) {
alert(response.city);
}
).fail(function(){
console.log("failed");
});
“?callback = callback?”在ipinfo.io documentation中指示了网址中的部分内容。
有时会显示“请求太多”,这是可以的。但大部分时间它失败而没有任何错误。我做错了什么?
答案 0 :(得分:1)
将"http://ipinfo.io/?callback=callback?"
更改为"http://ipinfo.io/?callback=?
。
$.getJSON(
"http://ipinfo.io/?callback=?", function(response) {
alert(response.city);
}
).fail(function(){
console.log("failed");
});
答案 1 :(得分:0)
根据docs
如果网址包含字符串“callback =?” (或类似的,由...定义) 在服务器端API),请求被视为JSONP。见 讨论$ .ajax()中的jsonp数据类型以获取更多详细信息。
因此,请将代码从callback=callback?
更改为callback=?
,如下所示:
$.getJSON(
"http://ipinfo.io/?callback=?", function(response) {
alert(response.city);
}
).fail(function(){
console.log("failed");
});
如果webservice使用了与jsonp回调的回调不同的参数,则会相应地更改该部分。例如,如果您的服务器使用results=
,则网址将为"http://coolwebservice.io/?results=?"
答案 2 :(得分:0)