I'm trying to do an AJAX request to an api that provides weather data, for some reason the request keeps failing. I've tried to use a .fail() callback to grab an error message; the function gets called, but it only gives me empty strings to work with.
This is the code I'm using
navigator.geolocation.getCurrentPosition(function(position){
long = position.coords.longitude;
lat = position.coords.latitude;
console.log(long);
console.log(lat);
url = "http://api.openweathermap.org/data/2.5/weather?lat=" + encodeURIComponent(lat) + "&lon=" + encodeURIComponent(long) + "&APPID=" + encodeURIComponent(apikey);
console.log(url);
$.getJSON(url, function(response){
console.log("Success");
console.log(response);
}).fail(function(obj, stat, err){ console.log(err)});
});
The url I get on the console conforms perfectly to the api's standards, right down to the 'http' in the beginning. I've made sure the longitudes and latitudes are being properly fetched too. Any insight would be much appreciated.
Works fine Check this example. I will be changing my api so make sure you check it before i change it.
Try pasting the result of console.log(url);
to your browser and check if you get the desired output. Because i think there is a problem in your API
function func(){
lat = 37;
lon = 53;
apikey = "YOUR API";
url = "http://api.openweathermap.org/data/2.5/weather?lat=" + encodeURIComponent(lat) + "&lon=" + encodeURIComponent(lon) + "&APPID=" + encodeURIComponent(apikey);
console.log(url);
$.getJSON(url, function(response){
console.log("Success");
console.log(response);
}).fail(function(obj, stat, err){ console.log(err)});
}
func();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</div>