$ .getJSON()函数不会抓取外部api

时间:2016-10-06 01:12:14

标签: javascript jquery

这段代码工作正常,并从本地.json文件中提醒data.person1.name。

    $.getJSON("test.json", function(data) {
  alert("success");
  alert(data.person1.name);

 });

test.json

    { "person1" : {
    "name": "Morgan",
    "age": "30",
    "location": "Boston",
    "desire": "Singing",
    "fear": "Violence"
  },
  "person2": {
    "name": "Joss",
    "age": "42",
    "location": "Boston",
    "desire": "Hiking",
    "fear": "Irrationality"
  }
}

但是如果我尝试使用外部网址,就像这样的天气没有任何反应。(注意:我已经删除了API密钥,这是正确的而不是问题。)

    $.getJSON("api.openweathermap.org/data/2.5/weather?q=London&appid=APIKEY", function(data) {
  alert("success");
  alert(data.main.temp);

 });

来自天气API

    {  
   "coord":{  
      "lon":-0.13,
      "lat":51.51
   },
   "weather":[  
      {  
         "id":800,
         "main":"Clear",
         "description":"clear sky",
         "icon":"01n"
      }
   ],
   "base":"stations",
   "main":{  
      "temp":284.106,
      "pressure":1035.85,
      "humidity":67,
      "temp_min":284.106,
      "temp_max":284.106,
      "sea_level":1043.66,
      "grnd_level":1035.85
   },
   "wind":{  
      "speed":4.57,
      "deg":97.0002
   },
   "clouds":{  
      "all":0
   },
   "dt":1475715629,
   "sys":{  
      "message":0.0188,
      "country":"GB",
      "sunrise":1475734202,
      "sunset":1475774762
   },
   "id":2643743,
   "name":"London",
   "cod":200
}

有人可以解释一下这是为什么吗?我是jquery的一个完整的菜鸟,有点熟悉js,提前谢谢。 :)

2 个答案:

答案 0 :(得分:2)

在网址前添加http://。

$.getJSON("http://api.openweathermap.org/data/2.5/weather?q=London&appid=...", function(data){
    console.log(data);
 });

答案 1 :(得分:-1)

$.ajax({
  url: 'http://api.openweathermap.org/data/2.5/weather?q=London&appid=.',
  dataType: 'jsonp',
  success: function(data){
alert(data.main.temp);
  }
});

我四处搜索,发现这个替代品抓住了一个“jsonp”。 有效。不知道为什么atm,生病做一些挖掘和报告。