2016-08-23 94 views
2

在使用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調用內。請幫幫我。

回答

1

使用閉合,由當時的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

相關問題