我的API URL在Chrome浏览器中可以工作,但在我的测试apache本地主机环境中却不能工作。

问题描述 投票:0回答:1

当我把这个放到浏览器中时,它带回来的json对象和所有的天气数据都很好。http:/api.openweathermap.orgdata2.5weather?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>
javascript apache api xampp openweathermap
1个回答
0
投票

这里是解决方案!

我的响应需要从json转换为javascript对象。当我尝试this.response.main.temp.时,它一直给我undefined。我想出的办法是,当我尝试this.response[0]时,结果是一个"{"。我当时就想,好吧,所以这个一定是无法把这个json解释为一个对象。它只是一个所有json字符的字符串。所以我找到了json.parse(),以便把它变成一个javascript对象,然后咣当--API ping成功,可以访问所有的数据。


0
投票

或者,你可以直接把 "requestType = "json""改为responseType = json......而不用把它解析成一个对象。这不是 requestType,而是 responseType。是responseType。

© www.soinside.com 2019 - 2024. All rights reserved.