2017-03-19 2 views
-1

Im Grunde, was ich versuche, ist eine Suchleiste zu haben. Der Benutzer sollte den Zustand und die Stadt eingeben. Sobald ich den Zustand und die Stadt bekomme, aktualisieren Sie die HTML mit dem Ergebnis. Das Problem ist, sobald ich einen ungültigen Zustand oder eine Stadt eingegeben habe, gibt es mir einen Fehler in der Konsole. Was ich will, ist eine Warnung, die dem Benutzer mitteilt, dass er bei der Einreise in die Stadt oder den Staat einen Fehler gemacht hat. Ich habe versucht, eine versuchen und fangen/Ajax-Fehler-Funktion, aber es scheint nicht zu funktionieren. Brauche Hilfe, danke!Ajax Fehler Funktion funktioniert nicht 2

$(document).ready(function() { 

    setTimeout(function(){ 
     $('body').addClass('loaded'); 
     $('h1').css('color','#222222'); 
    }, 3000); 

    var search= $('#search'); 
    var searchsubmit= $('#searchsubmit'); 

    searchsubmit.on('click', function(e){ 
     console.log(search.val()); 
     var searchresult= search.val(); 

     try { 
      $.ajax({ 
       url:"http://api.wunderground.com/api/69e8e728a8f8536f/geolookup/conditions/q/"+ searchresult +"/Cedar_Rapids.json", 
       dataType : "jsonp", 
       success : function(parsed_json) { 
        var location = parsed_json['location']['city']; 
        var temp_f = parsed_json['current_observation']['temp_f']; 
        alert("Current temperature in " + location + " is: " + temp_f); 
       } 
      }); 
     }catch(err){ 
      alert(err.message); 
     } 

    }); 

}); 
+1

Was ist die Fehlermeldung? Bitte fügen Sie es in Ihre Frage ein –

+0

Wahrscheinlich keine gute Idee, Ihren API-Schlüssel in die Frage aufzunehmen ... –

Antwort

0

Ich denke, dass der Fehler-Callback Hinzufügen funktionieren soll, ist hier ein jsbin:

https://jsbin.com/ciwosoqeye/edit?html,js,output

var searchresult = ''; 

    $.ajax({ 
    url:"http://api.wunderground.com/api/69e8e728a8f8536f/geolookup/conditions/q/" + 
     searchresult +"/Cedar_Rapids.json", 
    dataType : "jsonp", 
    success : function(parsed_json) { 
     var location = parsed_json['location']['city']; 
     var temp_f = parsed_json['current_observation']['temp_f']; 
     alert("Current temperature in " + location + " is: " + temp_f); 
    }, 
    error: function(jqxhr, errorString, ex) { 
     alert(ex); 
    } 
    }); 

wie in den definierten doc

0

Ohne zu wissen, welche Fehlermeldung Sie sind bekommen oder was parsed_json sieht mit einer schlechten Anfrage aus, das ist nur eine Vermutung, aber parsed_json hat wahrscheinlich nicht eine location Eigenschaft und/oder eine city Eigenschaft, wenn schlechte Daten übergeben werden. Ich vermute, dass das den Fehler verursacht. Wenn dies der Fall ist, können Sie prüfen, ob parsed_json.location und parsed_json.location.city vorhanden sind, bevor Sie versuchen, auf sie zuzugreifen und den Fehler anzuzeigen, wenn sie nicht vorhanden sind.

$(document).ready(function() { 

    setTimeout(function() { 
     $('body').addClass('loaded'); 
     $('h1').css('color','#222222'); 
    }, 3000); 

    var search = $('#search'); 
    var searchsubmit = $('#searchsubmit'); 

    searchsubmit.on('click', function(e){ 
     console.log(search.val()); 
     var searchresult= search.val(); 

     $.ajax({ 
      url:"http://api.wunderground.com/api/69e8e728a8f8536f/geolookup/conditions/q/"+ searchresult +"/Cedar_Rapids.json", 
      dataType : "jsonp", 
      success : function(parsed_json) { 
       if (parsed_json.location && parsed_json.location.city) { 
        var location = parsed_json.location.city; 
        var temp_f = parsed_json.current_observation.temp_f; 
        alert("Current temperature in " + location + " is: " + temp_f); 
       } else { 
        alert(err.message); 
       } 
      } 
     }); 
    }); 
}); 

Einstellen eines Stützpunktes am Anfang des success Rückruf und parsed_data Inspektion beim Debuggen diese Art der Sache helfen würde.