Ich habe an einem einfachen Wetter-App-Projekt gearbeitet. Der Benutzer gibt eine Postleitzahl in ein Eingabeelement ein, das (nach dem Anklicken eines Schaltflächenelements) einen API-Aufruf an wunderground.com ausführt. Ein paar Datenstücke werden dann aus dem JSON-Objekt abgerufen, mit einem String versehen und in das DOM eingefügt.Probleme mit jQuery .on ('klicken') API-Aufruf
(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("");
})
});
})();
Die jQuery funktioniert gut auf den ersten API-Aufruf.
GET https://api.wunderground.com/api/3b411ca908826af8/conditions/q/70118.json
Der zweite API-Aufruf jedoch nicht.
GET https://api.wunderground.com/api/3b411ca908826af8/conditions/q/70118.json06840.json
Das Problem scheint in der Art, wie ich die weatherByZip Variable deklarieren zu sein:
var weatherByZip = wundergroundAPI += inputValue += '.json';
Was ich bestimmt wurde, dass der weatherByZip Variable aktualisiert werden würde (mit einem neuen Inputvalue plus .json Erweiterung) jedes Mal, wenn die Funktion aufgerufen wird. Stattdessen werden die Werte inputValue und .json an das Ende der zuvor erstellten Variablen angehängt.
70118.json06840.json
70118.json06840.json90210.json
Wie würde ich meine jQuery-Funktion beheben, um dieses Problem zu beheben. Das heißt, jedes Mal, wenn die Funktion aufgerufen wird (ein Schaltflächenelement wird angeklickt), tritt ein neuer/aktualisierter API-Aufruf auf?
Vielen Dank Alain Stoffels! Es hat perfekt funktioniert. Manchmal bin ich so in ein Problem vertieft, dass ich einfache Lösungen übersehen kann. Ich habe darüber nachgedacht, welche jQuery-Methode zu verwenden ist, anstatt meine Operatoren zu ändern. – GoMagikarp