首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JavaScript/jQuery中使用Ajax调用时出现类型错误

在JavaScript/jQuery中使用Ajax调用时出现类型错误
EN

Stack Overflow用户
提问于 2016-08-23 19:32:13
回答 1查看 51关注 0票数 2

在使用jQuery提取循环中的一些值时,我得到了以下错误。我在下面显示我的错误。

代码语言:javascript
复制
Uncaught TypeError: Cannot read property 'no_of_optional' of undefined

我在下面提供我的代码。

代码语言:javascript
复制
var data = $.param({
  'op': 'setPollField',
  'sid': id
});
$.ajax({
method: 'POST',
url: "dbcon/DBConnection.php",
data: data
}).done(function(msg) {
  var qdata = JSON.parse(msg);
  var get = $("#ques").val();
  var cntr = 0;
  for (var i = 1; i < get; i++) {
    if (i != 0) {
      $("#questions0").val(qdata[0].questions);
      $('#noofoption0').val(qdata[0].no_of_optional);
      var data = $.param({
        'op': 'getOptional',
        'id': qdata[0]['_id']['$id']
      });
      $.ajax({
        method: 'POST',
        url: "dbcon/DBConnection.php",
        data: data
      }).done(function(msg) {
          var optdata = JSON.parse(msg);
          var cnt = 0;
          for (var j = 0; j < qdata[0].no_of_optional; j++) {

          }
        }
        cnt++;
      }
    })
}
if (i == 1) {
  $('#questions' + i).val(qdata[i].questions);
  $('#noofoption' + i).val(qdata[i].no_of_optional);
  var data = $.param({
    'op': 'getOptional',
    'id': qdata[i]['_id']['$id']
  });
  $.ajax({
    method: 'POST',
    url: "dbcon/DBConnection.php",
    data: data
  }).done(function(msg) {
    var optdata = JSON.parse(msg);
    var cnt = 0;
    console.log('first question', qdata[i].no_of_optional);
    for (var j = 0; j < qdata[i].no_of_optional; j++) {

    }
  })
}
}
})

我在这个console.log('first question',qdata[i].no_of_optional);中得到了错误,.Actually qdata包含两组数据(qdata[0],qdata[1]),但是在第二个ajax调用中,i变成了2。

在这里,我期待着第二次ajax调用中的qdata[1].no_of_optiona

EN

回答 1

Stack Overflow用户

发布于 2016-08-23 19:34:29

使用闭包,在调用done回调时,for循环已经完成并递增i:-

代码语言:javascript
复制
var data = $.param({
  'op': 'setPollField',
  'sid': id
});
$.ajax({
  method: 'POST',
  url: "dbcon/DBConnection.php",
  data: data
}).done(function(msg) {
  var qdata = JSON.parse(msg);
  var get = $("#ques").val();
  var cntr = 0;
  for (var i = 1; i < get; i++) {
    if (i == 1) {

      (function(i) {

        $('#questions' + i).val(qdata[i].questions);
        $('#noofoption' + i).val(qdata[i].no_of_optional);
        var data = $.param({
          'op': 'getOptional',
          'id': qdata[i]['_id']['$id']
        });

        $.ajax({
          method: 'POST',
          url: "dbcon/DBConnection.php",
          data: data
        }).done(function(msg) {
          var optdata = JSON.parse(msg);
          var cnt = 0;
          console.log('first question', qdata[i].no_of_optional);
          for (var j = 0; j < qdata[i].no_of_optional; j++) {

          }
        })

      })(i);
    }
  }
})

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

https://stackoverflow.com/questions/39100018

复制
相关文章

相似问题

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