Javascript读取来自url请求的JSON

Javascript读取来自url请求的JSON,javascript,ajax,json,html,Javascript,Ajax,Json,Html,嗨,我正在用JSON为自己做一个小练习,我正在尝试从URL重新保存数据 查询没有问题,数据返回后,我甚至可以使用innerHTML将其写入html文件。 但若我想访问JSON数据的键,它会说它是未定义的。 但是如果我给这个变量JSON代码并格式化它,我甚至可以访问我没有得到的键 /* Here Goes Your Ajax Code */ var server; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Ope

嗨,我正在用JSON为自己做一个小练习,我正在尝试从URL重新保存数据

查询没有问题,数据返回后,我甚至可以使用innerHTML将其写入html文件。 但若我想访问JSON数据的键,它会说它是未定义的。 但是如果我给这个变量JSON代码并格式化它,我甚至可以访问我没有得到的键

/* Here Goes Your Ajax Code */
var server;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    server = new XMLHttpRequest();
} else {// code for IE6, IE5
    server = new ActiveXObject("Microsoft.XMLHTTP");
}

var city = "Düsseldorf"
var userInput = document.getElementById("userInput");
userInput.addEventListener("change", myFunction);
var weatherUrl = "http://api.openweathermap.org/data/2.5/weather?q="+city;
server.open("POST", weatherUrl , false);
server.send();
var weather= JSON.parse(server.responseText);


document.getElementById("errorMe").innerHTML = weather;

city = weather.name;

document.getElementById("city").innerHTML = city;




function myFunction() {
    city = document.getElementById("userInput").value;
    weatherUrl = "http://api.openweathermap.org/data/2.5/weather?q="+city;
    server.open("POST", weatherUrl , false);
    server.send();
    document.getElementById("myDiv").innerHTML = weather= JSON.parse(server.responseText);
     weather= JSON.parse(server.responseText);

    if(weather.cod == 404){
        document.getElementById("myDiv").innerHTML = "<p>You typet a city that does not Exist!</p>";
    }else{
        document.getElementById("myDiv").innerHTML = weather;
    }

}
/*下面是您的Ajax代码*/
var服务器;
if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码
服务器=新的XMLHttpRequest();
}else{//IE6、IE5的代码
服务器=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
var city=“Düsseldorf”
var userInput=document.getElementById(“userInput”);
userInput.addEventListener(“更改”,myFunction);
var weatherUrl=”http://api.openweathermap.org/data/2.5/weather?q=“+城市;
server.open(“POST”,weatherUrl,false);
server.send();
var weather=JSON.parse(server.responseText);
document.getElementById(“errorMe”).innerHTML=天气;
city=weather.name;
document.getElementById(“城市”).innerHTML=城市;
函数myFunction(){
city=document.getElementById(“userInput”).value;
weatherUrl=”http://api.openweathermap.org/data/2.5/weather?q=“+城市;
server.open(“POST”,weatherUrl,false);
server.send();
document.getElementById(“myDiv”).innerHTML=weather=JSON.parse(server.responseText);
weather=JSON.parse(server.responseText);
如果(weather.cod==404){
document.getElementById(“myDiv”).innerHTML=“您键入的城市不存在!

”; }否则{ document.getElementById(“myDiv”).innerHTML=天气; } }
我猜当您使用从服务器返回的版本时,它只是文本-您需要使用

weather = JSON.parse(theResponseData);

将其转换为随后可以访问其属性的对象。

我看不出您试图在何处对响应执行任何操作(甚至看不到您在何处收到响应)。您发布的代码似乎不完整。请通读并用更好的例子更新你的问题。@FelixKling你今天真的很暴躁。我认为问题很清楚;OP从服务器接收一个JSON字符串,但在尝试访问密钥之前不会将其转换为对象。去休息一下,喝点咖啡,在做出判断之前再花几秒钟回答这些问题。@Joe:请原谅我试图保持一定的质量水平。顺便说一句,我没说问题不清楚。我说这个例子不是很好,因为它没有反映所描述的问题。@FelixKling谢谢你的意图。我更改了代码,这样你就可以看到我做了什么。我不知道它是否有用,它到底在哪里说
未定义的