首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法读取未定义的属性“Drivers”

无法读取未定义的属性“Drivers”
EN

Stack Overflow用户
提问于 2019-01-15 00:36:51
回答 3查看 372关注 0票数 0

这是我第一次在这里发帖,但我迫切需要一个解决方案。如果我的问题格式不正确,我提前向您道歉。所以基本上我正在努力的是将json数据附加到我的html中的段落中。我的应用程序接口是好的,我检查了console.log的数据在那里,但每次我试图追加数据,一个错误弹出在我的控制台上说:未捕获驱动程序:无法读取属性‘TypeError’的未定义。

我尝试从function中删除MRData,但似乎没有任何效果。

代码语言:javascript
复制
     $.getJSON("http://ergast.com/api/f1/2016/drivers.json", function(MRData) {
        console.log(MRData);
        var drId = MRData.DriverTable.Drivers[0].driverId;
        var permanentNum = MRData.DriverTable.Drivers[0].permanentNumber;
        var kod = MRData.DriverTable.Drivers[0].code;
        $('#p0').append(drId);
        $('#p1').append(permanentNum);
        $('#p2').append(kod);
   })
    <body>
          <p id="p0"></p>
          <p id="p1"></p>
          <p id="p2"></p>
    </body>

我希望在这里完成的是从每个变量中获取字符串,并将它们附加到我的段落中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-15 00:47:36

问题是,您认为结果数据是MRData,但实际上它是一个包含MRData的对象。

代码语言:javascript
复制
data = {
    MRData: {...}
}

访问MRData将使您的代码正常工作。

代码语言:javascript
复制
$.getJSON("http://ergast.com/api/f1/2016/drivers.json", function(data) {
  //data is an object which will have MRData inside.
  var MRData = data.MRData;
  var drId = MRData.DriverTable.Drivers[0].driverId;
  var permanentNum = MRData.DriverTable.Drivers[0].permanentNumber;
  var kod = MRData.DriverTable.Drivers[0].code;
  $('#p0').append(drId);
  $('#p1').append(permanentNum);
  $('#p2').append(kod);
})
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body>
  <p id="p0"></p>
  <p id="p1"></p>
  <p id="p2"></p>
</body>

票数 1
EN

Stack Overflow用户

发布于 2019-01-15 00:55:31

您必须使用

代码语言:javascript
复制
var MRData =data.MRData;
        console.log(data.MRData);
        var drId = MRData.DriverTable.Drivers[0].driverId;
        var permanentNum = MRData.DriverTable.Drivers[0].permanentNumber;
        var kod = MRData.DriverTable.Drivers[0].code;
        $('#p0').append(drId);
        $('#p1').append(permanentNum);
        $('#p2').append(kod);
   })

收件人数据具有字段MRData,而您使用的是var MRData =data.MRData;

票数 0
EN

Stack Overflow用户

发布于 2019-01-15 01:04:46

在json文件中,您有一个变量mrData,因此您的起点应该是

代码语言:javascript
复制
MRData.MRData.DriverTable.Drivers

如果你看一下你的json文件,它会说

代码语言:javascript
复制
{ 
  MRData={}
}

添加MRData= MRData.MRData;应该可以解决这个问题。或者,您可以简单地将jsonfile文件内容修改为{DriverTable:{// bla bla bla }}

代码语言:javascript
复制
    $.getJSON("http://ergast.com/api/f1/2016/drivers.json", function(MRData) {
        console.log(MRData);
        MRData= MRData.MRData; // here is a simple workout
      
        var drId = MRData.DriverTable.Drivers[0].driverId;
        var permanentNum = MRData.DriverTable.Drivers[0].permanentNumber;
        var kod = MRData.DriverTable.Drivers[0].code;
        $('#p0').append(drId);
        $('#p1').append(permanentNum);
        $('#p2').append(kod);
        
   })
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body>
          <p id="p0"></p>
          <p id="p1"></p>
          <p id="p2"></p>
    </body>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54185600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档