在jquery get请求中从for循环调用var i

Calling var i from for loop in jquery get request

本文关键字:循环 调用 var for jquery get 请求      更新时间:2023-09-26

我在$.get的作用域中访问var I时遇到问题。这是我的代码:

for (var i = 0; i < printer_ids.length; i++) {
  $.get('/get_printer_status_message/'+printer_ids[i]+'/', function(data) {
    $('#printer_status_'+printer_ids[i]).html(data);
    console.log(data)
    console.log('id: #printer_status_'+printer_ids[i]);
    console.log('current:' + $('#printer_status_'+printer_ids[i]).html());
  });
}

i是在$.get行中定义的,但不在$.got的作用域中。如何访问$.get作用域中的vari?

一个更好的重构,可以避免在每圈重新定义函数:

var doIt = function (printer_id){
    $.get('/get_printer_status_message/'+printer_id]+'/', function(data) {
      $('#printer_status_'+printer_id).html(data);
      console.log(data)
      console.log('id: #printer_status_'+printer_id);
      console.log('current:' + $('#printer_status_'+printer_id).html());
    });
};
for (var i = 0; i < printer_ids.length; i++) {
    doIt(printer_ids[i]);
}

您必须在本地作用域中捕获i变量:

for (var i = 0; i < printer_ids.length; i++) {
  (function (i){
    $.get('/get_printer_status_message/'+printer_ids[i]+'/', function(data) {
      $('#printer_status_'+printer_ids[i]).html(data);
      console.log(data)
      console.log('id: #printer_status_'+printer_ids[i]);
      console.log('current:' + $('#printer_status_'+printer_ids[i]).html());
    });
  }(i));
}