1

以下の例では、 everytimekeyの長さに等しくなります。変数として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 に答える