未捕获的ReferenceError:函数未定义;试图建立天气网站

时间:2015-11-04 02:42:19

标签: javascript html web

我正在尝试构建一个使用openweathermap的api的小网站。小网站将有一个邮政编码框和一个用于按邮政编码搜索的提交按钮,它还有一个城市文本框和一个按城市搜索的提交按钮。这是我到目前为止所拥有的;我将提交代码,我也会将您发送到我的jsfiddle

编辑:我遇到的具体错误是 - “未捕获的ReferenceError:邮政编码未定义”

编辑编辑:多个问题,但最大的问题是区分大小写,答案在下面解决了。

如果api相关,可以找到here

<body>
    Zipcode: <input type="number" id="myZip" min="11111" max="99999" value="00000"/>
    <input type="button" value="Search by Zipcode" onclick="getWeatherbyZip()"/>
    <br>
    City: <input type="text" id="myCity" value="Enter city"/>
    <input type="button" value="Search by City" onclick="getWeatherByCity()"/>

    <script>
        event.preventDefault(); 
        function getWeatherbyZip()
        {
            var zipCode = getZip();
            var req = new XMLHttpRequest();
            req.open("GET", "http://api.openweathermap.org/data/2.5/weather?zip="+zipcode+",us&appid=fa7d80c48643dfadde2cced1b1be6ca1"+key, false);
            req.send(null);
            console.log(JSON.parse(req.responseText));
        }  
        function getZip() 
        {
            return document.getElementById("myZip").value;
        }

        function getWeatherByCity()
        {
            var city = getCity();
            var req = new XMLHttpRequest();
            req.open("GET", "http://api.openweathermap.org/data/2.5/weather?q="+city+",us&appid=fa7d80c48643dfadde2cced1b1be6ca1"+key, false);
            req.send(null);
            console.log(JSON.parse(req.responseText));
        }  
        function getCity() 
        {
            return document.getElementById("myCity").value;
        }

    </script>
</body> 

2 个答案:

答案 0 :(得分:1)

Javascript区分大小写,您声明了一个混合大小写var zipCode,但在网址字符串zipcode中使用了全小写变量。

尝试:

function getWeatherbyZip()
        {
            var zipCode = getZip();
            var req = new XMLHttpRequest();
            req.open("GET", "http://api.openweathermap.org/data/2.5/weather?zip="+zipCode+",us&appid=fa7d80c48643dfadde2cced1b1be6ca1"+key, false);
            req.send(null);
            console.log(JSON.parse(req.responseText));
        } 

答案 1 :(得分:0)

首先,在代码中放置event.preventDefault();毫无意义。而且,在调用函数时无需添加关键字function。你应该

var zipCode = getZip();
var city = getCity();

而不是

var zip = function getZip();
var city = function getCity();