在javascript中使用Ajax调用时出现类型错误/ Jquery

问题描述:

在使用Jquery.I在下面显示我的错误时,我在获取以下错误时提取了一些值。在javascript中使用Ajax调用时出现类型错误/ Jquery

Uncaught TypeError: Cannot read property 'no_of_optional' of undefined 

我在下面解释我的代码。

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);。其实qdata是包含两个数据集(qdata[0],qdata[1])的得到错误,但第二Ajax调用内i变得2.actually在这里,我期待qdata[1].no_of_optiona秒Ajax调用内。请帮帮我。

使用闭合,由当时的done回调被称为for循环已完成,增加i: -

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); 
 
    } 
 
    } 
 
})

+0

@镚:让我来测试它。 – satya

+0

我给了问题的一部分,我得到的问题,但实际上我也有这样的条件'如果(我!= 1){...}'这是不工作,如果我更新你的代码。我正在用完整的代码再次更新我的文章。 – satya

+0

如果条件不起作用,请再次检查我的更新后的帖子。 – satya