OpenWeatherMap api没有响应

时间:2017-02-22 14:51:35

标签: jquery ajax

我目前正在尝试从

获取数据
openweathermap.org

城市ID 。但我无法得到任何东西。我想我可能做错了,因为我只是初学者并且第一次尝试ajax。

HTML:

<!DOCTYPE html>
<html>
    <head>
    <title>Your Weather</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="">
    </head>
    <body>
        <div>
        <h1>The Weather</h1>
            <div>
                <p>
                    <span id="show-weather"></span>
                </p>
            </div>
        </div>
        <script src="jquery-3.1.1.js"></script>
        <script src="custom.js"></script>
    </body>
</html>

JS:

$(document).ready(function(){

    function getCurrentWeather() {
        $.ajax({
           url: 'http://samples.openweathermap.org/data/2.5/weather/' ,
           jsonp: 'jsonp',
           data: {
               id: '2172797',
               appid: 'b1b15e88fa797225412429c1c50c122a1'
           },
           type: "GET",
           dataType: "jsonp"

        })
        $done(function(json) {
            $('#show-weather').text(json.coord.lon);
        })
    }
});

2 个答案:

答案 0 :(得分:2)

在我看来,使用JSONP是一种黑客行为。

使用下面的综合方法,您可以轻松使用Open Weather Map API:

&#13;
&#13;
$(document).ready(function() {
    $.ajax({
        type: 'GET',
        data: {
            id: '2172797',
            appid: 'b1b15e88fa797225412429c1c50c122a1'
        },
        url: 'https://samples.openweathermap.org/data/2.5/weather/',
        xhrFields: {
            withCredentials: false
        },
        headers: {},
        success: function(data) {
            console.log('success');
            console.log(data);
        },
        error: function(data) {
            console.log('error');
            console.log(data);
        },
    });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

您要查找的关键字是“异步编程”:jQuery.ajax()函数在服务器的答案到达之前完成执行。因此,您必须事先告诉该函数在稍后的某个时间点应该发生什么。

您作为参数提供的属性对象具有一个特殊键:success。它的值必须是服务器应答时执行的函数。

$(document).ready(function(){

    function getCurrentWeather() {
        $.ajax({
           url: 'http://samples.openweathermap.org/data/2.5/weather/' ,
           jsonp: 'jsonp',
           data: {
               id: '2172797',
               appid: 'b1b15e88fa797225412429c1c50c122a1'
           },
           type: "GET",
           dataType: "jsonp",
        }).done(function(json) {
           $('#show-weather').text(json.coord.lon);
       };
    }
});