2014-10-07 52 views
-1

嗨即时通讯做点运动对我自己用JSON和我试图从URL reatrieve数据是来自一个URL请求的Javascript阅读JSON

http://api.openweathermap.org/data/2.5/weather?q=miami

查询有没有问题和数据返回,我甚至可以用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; 
    } 

} 
+2

我没有看到你在哪里试图做任何响应(或者甚至在你收到响应的地方)。您发布的代码似乎不完整。请通读http://stackoverflow.com/help/mcve并更新您的问题。 – 2014-10-07 15:40:08

+1

@FelixKling你今天真的脾气暴躁。 *我认为这个问题很清楚。 OP从服务器接收JSON字符串,但在尝试访问密钥之前未将其转换为对象。在做出判断之前,先休息一下,喝点咖啡,再花几秒钟的时间回答这些问题。 – 2014-10-07 15:44:50

+0

@Joe:请原谅我试图保持一定的质量水平。顺便说一句,我没有说这个问题不明确。我说这个例子不是很好,因为它没有反映所描述的问题。 – 2014-10-07 15:54:24

回答

2

我猜,当你使用的是来自于服务器返回的版本,它只是文本 - 你需要使用

weather = JSON.parse(theResponseData); 

把它变成一个对象,你可以随后访问属性。

+0

It Work thank you – 2014-10-08 07:29:53