Javascript jQuery.on(';单击';)API调用的问题

Javascript jQuery.on(';单击';)API调用的问题,javascript,jquery,json,api,Javascript,Jquery,Json,Api,我一直在做一个简单的天气应用程序项目。用户在输入元素中输入邮政编码,该元素(单击按钮元素)对wunderground.com进行API调用。然后从JSON对象抓取几段数据,将其字符串化并插入DOM (function() { var wundergroundAPI = "https://api.wunderground.com/api/3b411ca908826af8/conditions/q/"; var input = $('input');

我一直在做一个简单的天气应用程序项目。用户在输入元素中输入邮政编码,该元素(单击按钮元素)对wunderground.com进行API调用。然后从JSON对象抓取几段数据,将其字符串化并插入DOM

(function() {
        var wundergroundAPI = "https://api.wunderground.com/api/3b411ca908826af8/conditions/q/";
        var input = $('input');

        $('#submit').on('click', function() {
            var inputValue = input.val();
            var weatherByZip = wundergroundAPI += inputValue += '.json';
            $.getJSON(weatherByZip, function(json) {
                $('#temp-f')
                .text('Temperature: ' + JSON.stringify(json['current_observation']['temp_f']) + ' F');
                $('#location')
                .text('Location: '+ JSON.stringify(json['current_observation']['display_location']['full']));
                $('#weather')
                .text('Weather: ' + JSON.stringify(json['current_observation']['weather']));
                input.val("");
            })
        });
    })();
jQuery在第一次API调用时运行良好

GET https://api.wunderground.com/api/3b411ca908826af8/conditions/q/70118.json
但是,第二个API调用没有

GET https://api.wunderground.com/api/3b411ca908826af8/conditions/q/70118.json06840.json
问题似乎在于我声明weatherByZip变量的方式:

var weatherByZip = wundergroundAPI += inputValue += '.json';
我的意图是每次调用该函数时都会更新weatherByZip变量(使用新的inputValue加上.json扩展名)。相反,将inputValue和.json追加到先前创建的变量的末尾

70118.json06840.json
70118.json06840.json90210.json
如何修复jQuery函数以纠正此问题。也就是说,每次调用函数时(单击按钮元素),都会发生新的/更新的API调用?

Change+=to+

var weatherByZip = wundergroundAPI + inputValue + '.json';
wundergroundAPI+=inputValue意味着:取wundergroundAPI的现有值,并将其后面的inputValue值连接起来。这就是为什么你的wundergroundAPI越来越长

 var inputValue = input.val();
 var weatherByZip = wundergroundAPI + inputValue + '.json';
更安全的方法是修剪
inputValue
,在用户添加空格时删除空格

 var inputValue = input.val().trim();
但是,要知道IE8不支持它。你需要一个塑料填充物

编辑:正如@Kevin B提到的,jQuery提供了一种适用于所有平台的修剪方法。如果您需要支持IE8,或者不想复制/粘贴多边形填充,请使用它,如下所示:

var inputValue = $.trim(input.val());

但是,要知道IE8不支持它。幸运的是jquery也有这样的方法。我不知道,谢谢。你知道这个方法是否适用于IE8-?是的,因为这就是他们添加它的原因。很好,有道理。就我而言,我仍然不会使用它,因为我不支持IE8-。但我还是想确保OP知道我很欣赏jonathanGB的洞察力。我确实将输入元素的maxlength属性设置为5。既然输入的是我们的邮政编码,那么空格就不会成为问题了吗?谢谢阿兰·斯托费尔斯!它工作得很好。有时我被一个问题缠住了,以至于忽略了简单的解决方案。我一直在考虑使用什么jQuery方法,而不是更改运算符。