Javascript 无法访问JSON项

Javascript 无法访问JSON项,javascript,html,json,Javascript,Html,Json,我在处理甚至发出HTML请求方面完全是新手,所以我想我的问题看起来很琐碎,但我做了一些研究,但我找不到为什么我的代码不能工作的答案 我向AccuWeather API发出了一个简单的请求,使用他们的临时访问键-响应文本似乎很好,并且可以正确显示。但之后,我尝试访问响应中的一个指定项,每次我尝试读取它的值时,浏览器(最新稳定的Chrome)都会在控制台中返回undefined。以下是我制作和解析请求的脚本: var r = new XMLHttpRequest; function requ

我在处理甚至发出HTML请求方面完全是新手,所以我想我的问题看起来很琐碎,但我做了一些研究,但我找不到为什么我的代码不能工作的答案

我向AccuWeather API发出了一个简单的请求,使用他们的临时访问键-响应文本似乎很好,并且可以正确显示。但之后,我尝试访问响应中的一个指定项,每次我尝试读取它的值时,浏览器(最新稳定的Chrome)都会在控制台中返回undefined。以下是我制作和解析请求的脚本:

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