Javascript 无法访问JSON项
我在处理甚至发出HTML请求方面完全是新手,所以我想我的问题看起来很琐碎,但我做了一些研究,但我找不到为什么我的代码不能工作的答案 我向AccuWeather API发出了一个简单的请求,使用他们的临时访问键-响应文本似乎很好,并且可以正确显示。但之后,我尝试访问响应中的一个指定项,每次我尝试读取它的值时,浏览器(最新稳定的Chrome)都会在控制台中返回undefined。以下是我制作和解析请求的脚本:Javascript 无法访问JSON项,javascript,html,json,Javascript,Html,Json,我在处理甚至发出HTML请求方面完全是新手,所以我想我的问题看起来很琐碎,但我做了一些研究,但我找不到为什么我的代码不能工作的答案 我向AccuWeather API发出了一个简单的请求,使用他们的临时访问键-响应文本似乎很好,并且可以正确显示。但之后,我尝试访问响应中的一个指定项,每次我尝试读取它的值时,浏览器(最新稳定的Chrome)都会在控制台中返回undefined。以下是我制作和解析请求的脚本: var r = new XMLHttpRequest; function requ
var r = new XMLHttpRequest;
function request()
{
r.open("GET","http://apidev.accuweather.com/currentconditions/v1/273125.json?language=pl&apikey=hoArfRosT1215",true);
r.send(null);
r.onreadystatechange = pr;
}
function pr()
{
if(r.readyState == 4)
{
if(r.status==200)
{
console.log("pr() function has been called");
var myObj, myJSON, text, obj;
myObj = r.responseText;
obj=JSON.parse(myObj);
console.log(obj.WeatherText);
}
}
}
我假设在解析请求时我做错了什么,所以浏览器无法正确访问该项,但我不知道出了什么问题。有人能告诉我在我的情况下使用某些物品的正确方法吗
PS.通过导航到用于发出请求的地址可以找到响应文本。使用
obj[0]。WeatherText
而不是obj。WeatherText
function request() {
r.open("GET", "http://apidev.accuweather.com/currentconditions/v1/273125.json?language=pl&apikey=hoArfRosT1215", true);
r.send(null);
r.onreadystatechange = pr;
}
function pr() {
if (r.readyState == 4) {
if (r.status == 200) {
console.log("pr() function has been called");
var myObj, myJSON, text, obj;
myObj = r.responseText;
obj = JSON.parse(myObj);
console.log(obj[0].WeatherText);
}
}
}
可能它会帮助您obj.WeatherText未定义是的,您需要说obj[0]。WeatherText,结果以数组形式返回……请参见以下内容:
var r=newxmlhttprequest;
函数请求()
{
r、 打开(“获取”http://apidev.accuweather.com/currentconditions/v1/273125.json?language=pl&apikey=hoArfRosT1215“,对);
r、 发送(空);
r、 onreadystatechange=pr;
}
函数pr()
{
if(r.readyState==4)
{
如果(r.status==200)
{
log(“调用了pr()函数”);
var myObj,myJSON,text,obj;
myObj=r.responseText;
obj=JSON.parse(myObj);
控制台日志(obj);
console.log(obj[0].WeatherText);
控制台日志(对象WeatherText);
}
}
}
请求()代码>问题在于accu weather发回数组的数据结构。因此,您需要访问obj[index].WeatherText以获取其值。最好增加一个长度检查,即使你知道总是有一个答案。下面是更新的代码和一些html来帮助测试它
var r=newxmlhttprequest;
函数请求()
{
r、 打开(“获取”http://apidev.accuweather.com/currentconditions/v1/273125.json?language=pl&apikey=hoArfRosT1215“,对);
r、 发送(空);
r、 onreadystatechange=pr;
}
函数pr()
{
if(r.readyState==4)
{
如果(r.status==200)
{
log(“调用了pr()函数”);
var myObj,myJSON,text,obj;
myObj=r.responseText;
obj=JSON.parse(myObj);
如果(对象长度>0){
对于(i=0;i