在getJSON jquery中使用变量作为URL

时间:2016-02-22 21:28:43

标签: javascript jquery json api

我正在使用jquery创建一个天气应用程序。我遇到的问题是在我的getJSON中我想使用我使用您当前的纬度和经度坐标创建的变量。带有openweather api密钥的url在浏览器中加载了json文件,但它似乎不想在我的getJSON中工作。

以下是我的javascript代码,可根据您的位置显示天气信息。

var lat;
var lon;
var jsonURL;

  navigator.geolocation.getCurrentPosition(GetLocation);
function GetLocation(location) {
    lat = location.coords.latitude;
    lon = location.coords.longitude;

    jsonURL = 'api.openweathermap.org/data/2.5/weather?lat=' + lat + '&lon=' + lon + '&APPID=example&units=imperial'

}



$("#getWeather").click(function(){
  console.log(jsonURL);
    $.getJSON(jsonURL , function( data ) {
    var items = [];
    items = data;   $("#weather").text(items.main.temp).append('℉');
    });
});

3 个答案:

答案 0 :(得分:3)

使用浏览器中的开发者工具。看看控制台。查看“网络”选项卡。这样可以清楚地表明您的网址导致了404错误。

您的网址缺少该计划。它前面需要http://https://

当您在地址栏中输入URL(缺少方案)时,浏览器会自动插入http://

答案 1 :(得分:0)

可能api没有设置为直接从javascript处理请求,经常需要在服务器端编写服务以与api通信,并向您发出AJAX请求服务而不是直接到api。浏览器默认阻止跨域AJAX请求

答案 2 :(得分:0)

实际上如上所述,将您的网址更改为包含:

    jsonURL = 'http://api.openweathermap.org/data/...'

并且还制作了JSOP'格式如此:

        $("#getWeather").click(function() {
          $.getJSON(jsonURL, {
              format: "jsonp"
            })
            .done(function(data) {
              console.log(data);
            }).fail(function(jqxhr, textStatus, error) {
              var err = textStatus + ", " + error;
              console.log("Request Failed: " + err);
            });
        });