1

在下面的示例中key,等于d1.periods每次的长度。除了作为变量传递key给匿名函数之外,它们是更好的方法吗?datapostkeysuccesses

$.ajax({
  url: 'api/dates.json',
  dataType: 'json',
  success: function(d1){
    $('#scan-interactive').removeClass('disabled');
    for(var key in d1.periods){

      var html = "";
      html += '<tr id="'+d1.periods[key].id+'">';
      html += '<td class="month">'+d1.periods[key].month+'</td>';
      html += '<td class="week">'+d1.periods[key].week+'</td>';
      html += '<td class="days">'+d1.periods[key].days+'</td>';
      html += '<td class="dates">'+d1.periods[key].dates+'</td>';
      html += '<td class="open"></td>';
      html += '<td class="refunded"></td>';
      html += '<td class="closed"></td>';
      html += "</tr>";
      $('#scan-interactive table tbody').append(html);

      $.ajax({
        type: 'POST',
        url: 'api/count.json',
        dataType: 'json',
        data:{'created_at_min':d1.periods[key].created_at_min,'created_at_max':d1.periods[key].created_at_max},
        success: function(d2){
          $('#'+d1.periods[key].id+" .open").html(d2.open);
          $('#'+d1.periods[key].id+" .closed").html(d2.closed);
          $('#'+d1.periods[key].id+" .returns").html(d2.returns);                  
        }
      });

    }
  }
});
4

2 回答 2

4

将其包裹在一个闭包中:

(function(key){

  $.ajax({
    type: 'POST',
    url: 'api/count.json',
    dataType: 'json',
    data:{'created_at_min':d1.periods[key].created_at_min,'created_at_max':d1.periods[key].created_at_max},
    success: function(d2){
      $('#'+d1.periods[key].id+" .open").html(d2.open);
      $('#'+d1.periods[key].id+" .closed").html(d2.closed);
      $('#'+d1.periods[key].id+" .returns").html(d2.returns);                  
    }
  });

})(key);
于 2012-04-26T19:39:45.740 回答
2

将密钥作为选项传递给 ajax 请求,然后使用 this.nameofoption 访问它。

for (var i = 0; i < 5; i++) {
    $.ajax({
        url: "/echo/html",
        method: "post",
        data: {
            html: "foo",
            delay: 1
        },
        context: {key: i},
        success: function(){
            console.log(this.key);
        }
    });
}

演示:http: //jsfiddle.net/R9Ldd/2/

更新为使用 firebuglite

于 2012-04-26T19:39:25.377 回答