API接受URL但不接受变量中的URL

时间:2017-03-23 13:22:01

标签: json ajax api

我希望能够使用location动态生成我的API查询。

如果我在console.log中输出我的地理位置并将其复制到我的ajax API URL,它就可以正常工作。

但是,当我尝试将带有字符串的变量传递给URL时,它就会停止工作。

因此,当我删除ajax URL并将其替换为包含相同URL的geoAddress变量时,它将停止工作。

这是codepen http://codepen.io/Middi/pen/peLMBQ

这是我的代码。

findFirst()

1 个答案:

答案 0 :(得分:1)

错误到达您的代码,因为AJAX调用会在不等待IF条件的情况下立即触发。这就是为什么当Ajax调用它时,它会在变量geoAddress

中收到空白值

尝试这种方式:

var geoAddress;

$(document).ready(function ($) {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function (position) {

            geoAddress = "http://api.openweathermap.org/data/2.5/weather?lat=" + position.coords.latitude + "&lon=" + position.coords.longitude + "&units=metric&appid=6776250c9f90718881dbecfc4c7c5319";

            $.ajax({
                url: geoAddress,
                success: function (parsed_json) {

                    var location = parsed_json.name;
                    var country = parsed_json.sys.country;
                    var temp_c = Math.round(parsed_json.main.temp);
                    var description = parsed_json.weather[0].description;
                    var icon = parsed_json.weather[0].icon;

                    // Add to Dom
                    $('.weather-place').html(icon + "<p>" + location + ", " + country + "</p><p>" + temp_c + "°C</p>" + "</p><p>" + description).fadeIn(400);
                }
            });

        });
    }
});