$ .getJSON不起作用。为什么?

时间:2015-07-29 17:03:01

标签: jquery jsonp

我可以使用$ .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中指示了网址中的部分内容。

有时会显示“请求太多”,这是可以的。但大部分时间它失败而没有任何错误。我做错了什么?

3 个答案:

答案 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)

老帖子,但像我这样的人可能正在寻找答案。 将文件保存在html或php中,即使其中的代码可能是json。 之后,如果您希望输出为json,请使用get或GETJSON,后者。