Мой URL-адрес API работает в браузере Chrome, но не будет работать в моей тестовой apache среде локального хоста - PullRequest
0 голосов
/ 06 мая 2020

Когда я помещаю это в браузер, он возвращает мне объект json со всеми погодными данными: http://api.openweathermap.org/data/2.5/weather?zip=90210&units=imperial&appid= {API Key}

Однако, Я использую свой XAMPP Apache в папке htdocs, чтобы попробовать проверить его в своем коде. Может ли кто-нибудь взглянуть на мой код и увидеть, что здесь не так? Большое спасибо за помощь.

var weatherInfo = document.getElementById("weather");
var zipCodeForm = document.getElementById("zipCodeForm");

function getWeather(zipCode){
	//create the url for the request
	var endpoint = "http://api.openweathermap.org/data/2.5/weather";
	var apiKey = {API Key};
	var queryString = "zip=" + zipCode + "&units=imperial&appid=" + apiKey;
	var url = endpoint + "?" +queryString;

	//create the request to get the weather data
	var xhr = new XMLHttpRequest();
	xhr.addEventListener("load", responseReceivedHandler);
	xhr.requestType = "json";
	xhr.open("GET", url);
	xhr.send();

	console.log("getWeather")
	console.log(xhr.response.status);
}

function responseReceivedHandler(){
	if(this.status === 200){
		weatherInfo.innerHTML = "Current temperature: " + this.response.main.temp;
	}

	else{
		weatherInfo.innerHTML="Not working";
	}

	console.log("responseReceivedHandler")


}

getWeather(90210);
 <body>
 	<form id="zipCodeForm">
 		<label for="zipCode">Please enter your zip code: </label>
 		<input type="text" name="zipCode" id="zipCode">
 		<input type="submit" name="submit">
 	</form>

 	<div id="weather"></div>
 </body>

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

В качестве альтернативы, вы можете просто заменить requestType = "json" "на responseType = json .... вместо того, чтобы преобразовывать его в объект. Это не requestType. Это responseType.

0 голосов
/ 07 мая 2020

ВОТ РЕШЕНИЕ !!

Мой ответ нужно было преобразовать из json в javascript объект. Когда я пробовал this.response.main.temp, мне постоянно возвращалось значение undefined. Я понял это следующим образом: когда я попробовал this.response [0], результат был «{». Я подумал, хорошо, значит, это не может интерпретировать этот json как объект. Это просто строка из всех json символов. Итак, я нашел json .parse (), чтобы превратить его в объект javascript, и бац - успешный пинг API с возможностью доступа ко всем данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...