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

Javascript requestData未定义,尽管JSON设置了var,javascript,jquery,json,Javascript,Jquery,Json,我正在尝试使用OpenWeatherAPI通过国家和城市获取天气,我以前从未使用JSON编码,所以请对我放松 这是我正在使用的代码: <script type="text/javascript"> $(document).ready(function () { $('#btnGetWeather').click(function () { var requestData = $('#txtCity').val()

我正在尝试使用OpenWeatherAPI通过国家和城市获取天气,我以前从未使用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>

$(文档).ready(函数(){
$('#btnGetWeather')。单击(函数(){
var requestData=$('#txtCity').val()+','+$('#txtCountry').val();
var resultElement=$(“#resultDiv”);
$.ajax({
网址:'http://api.openweathermap.org/data/2.5/weather',
方法:“get”,
数据:{q:requsestData},
数据类型:“json”,
成功:功能(数据){
html('Weather:'+data.Weather[0].main+'
'+'说明:'+data.Weather[0].Description); } }); }); });
我在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>

城市
国家


一些问题:


  • 有一个输入错误,您声明了
    var requestData
    ,并像
    requestData
    一样使用它。移除
    u和e之间的额外
    s

  • 方法
    应该是
    POST
    ,而不是
    GET


  • 正如其他人指出的那样,问题的部分原因是印刷错误。最后,您的请求应该如下所示:

    $.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。参考:

    您可以在此处获取API密钥:


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

    API是否支持跨域请求/COR?如果不是,您可能被同一原产地保单阻止了。我想是的,我是在遵循一个使用该保单的示例,它是开放天气的,有一个输入错误
    var requestData
    ,并像
    requestData
    一样使用它。删除
    u和e
    之间的额外
    s
    。检查下面的答案,我想还有一个问题。第一个问题可以解决您的问题,但如果您不将其更改为
    POST
    :),代码将无法工作很有趣,因为它确实如此