Javascript读取来自url请求的JSON

时间:2014-10-07 15:37:29

标签: javascript ajax json html5

我正在使用JSON为我自己做一些练习,我正在尝试从URL中重新获取数据

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

查询没有问题,数据又回来了我甚至可以用innerHTML将它写入html文件。 但是,如果我想访问JSON数据的密钥,它表示未定义。 但是,如果我给变量JSON代码与Formating它工作,我甚至可以访问我得不到它的键。

/* 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;
    }

}

1 个答案:

答案 0 :(得分:2)

我猜测当您使用从服务器返回的版本时,它只是文本 - 您需要使用

weather = JSON.parse(theResponseData);

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