Javascript requestData未定义,尽管为JSON设置了var

Javascript requestData undefined despite var set for JSON

本文关键字:JSON 设置 var requestData 未定义 Javascript      更新时间:2024-02-16

我正试图使用openweather api通过国家和城市获取天气,我以前从未使用JSON进行过编码,所以请放心使用

这是我正在使用的代码:

<script type="text/javascript">
        $(document).ready(function () {
            $('#btnGetWeather').click(function () {
                var requestData = $('#txtCity').val() + ',' + $('#txtCountry').val();
                var resultElement = $('#resultDiv');
                $.ajax({
                    url : 'http://api.openweathermap.org/data/2.5/weather',
                    method : 'get',
                    data: { q:requsestData },
                    dataType: 'json',
                    success : function (data){
                        resultElement.html('Weather: ' + data.weather[0].main + '<br />' + 'Description: ' + data.weather[0].description);
                    }
                });
            });
        });
    </script>

我在firebug上得到的错误是q:requestData未定义,这让我很困惑,输入的html在下面,我确信这是一个简单的错误,但我不确定这是什么

<tr>
            <td>
                City
            </td>
            <td>
                <input type="text" id="txtCity">
            </td>
        </tr>
        <tr>
            <td>
                Country
            </td>
            <td>
                <input type="text" id="txtCountry">
            </td>
        </tr>
    </table>
    <input type="button" id="btnGetWeather" value="Get Weather Data">
    <br /><br />
    <div id="resultDiv">
    </div>
正如其他人所指出的,问题的部分原因是印刷错误。最后,你的请求应该是这样的:
$.ajax({
  'method': 'POST',
  'url': 'http://api.openweathermap.org/data/2.5/weather',
  'data': {
    'q': city + ',' + country,
    'APPID': APIKEY,
  },
  'success': success,
});

您最需要添加的是您的API密钥。自2015年10月起,您需要API密钥才能使用Open Weather Map的API。参考编号:http://openweathermap.org/faq#error401

您可以在此处获取API密钥:http://openweathermap.org/appid

然后在data对象中添加"APPID"属性,并将其值设置为API键。

几个问题:

  1. 有一个拼写错误,您已经声明了var requestData,并像使用requsestData一样使用它。在u and e之间移除一个额外的s

  2. method应该是POST,而不是GET