Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Передача параметров в цикле (https://javascript.ru/forum/jquery/7505-peredacha-parametrov-v-cikle.html)

maxtet 04.02.2010 18:27

Передача параметров в цикле
 
Пишу программу с использованием Jquery. Стоит задача передать данные посредством асинхронного запроса к серверу. Написал такую функцию:

function jewerly_buyout_refresh(numb)
{
  
  var action_flag = $('input#JewerlyActionFlag').val();
  var jewerly_numb = $('select#JewerlyActionNumber').val();
  var action_button = $('input#JewerlyActionButton').val();
  var jewerly_name = $('input#JewerlyActionName').val();
  var jewerly_cat = $('select#JewerlyActionCat').val();
  var jewerly_proba = $('select#JewerlyActionProba').val();
  var jewerly_mass_b = $('input#JewerlyActionMassB').val();
  var jewerly_mass_n = $('input#JewerlyActionMassN').val();
  var jewerly_zalog = $('input#JewerlyActionZalog').val();
  var jewerly_percent = $('input#JewerlyActionPercent').val();
  var jewerly_penya = $('input#JewerlyActionPenya').val();
  
  var jewerly_title_add = [];
  for (var i=1; i<=numb; i++)
  {
    jewerly_title_add[i] = $('input#JewerlyActionTitleAdd' + i).val();
  }
  
  $.post('index.php', 
  {
    action_button: action_button,
    jewerly_numb: jewerly_numb,
    jewerly_name: jewerly_name,
    jewerly_cat: jewerly_cat,
    jewerly_proba: jewerly_proba,
    jewerly_mass_b: jewerly_mass_b,
    jewerly_mass_n: jewerly_mass_n,
    jewerly_zalog: jewerly_zalog,
    jewerly_percent: jewerly_percent,
    jewerly_penya: jewerly_penya,
    jewerly_title_add1: jewerly_title_add[1],
    jewerly_title_add2: jewerly_title_add[2],
    jewerly_title_add3: jewerly_title_add[3],
    jewerly_title_add4: jewerly_title_add[4],
    action_flag: action_flag
  }, 
  function(data)
  {
    $('div#JewerlyActionWindows').load('modules/mod_jewerly/actions/jewerly_buyout.php',
    {
      action_button: action_button,
      jewerly_numb: jewerly_numb,
      jewerly_name: jewerly_name,
      jewerly_cat: jewerly_cat,
      jewerly_proba: jewerly_proba,
      jewerly_mass_b: jewerly_mass_b,
      jewerly_mass_n: jewerly_mass_n,
      jewerly_zalog: jewerly_zalog,
      jewerly_percent: jewerly_percent,
      jewerly_penya: jewerly_penya,
      jewerly_title_add1: jewerly_title_add[1],
      jewerly_title_add2: jewerly_title_add[2],
      jewerly_title_add3: jewerly_title_add[3],
      jewerly_title_add4: jewerly_title_add[4],
      action_flag: action_flag
    }
    );
  });
}


Функция работает, но хотелось бы, услышать рекомендации как её оптимизировать. Например, следующий участок кода:

jewerly_title_add1: jewerly_title_add[1],
jewerly_title_add2: jewerly_title_add[2],
jewerly_title_add3: jewerly_title_add[3],
jewerly_title_add4: jewerly_title_add[4],


Хотелось бы реализовать в цикле.

Octane 04.02.2010 18:32

Не знаете, как в объект добавить свойства в цикле?

maxtet 04.02.2010 18:35

Именно так. Где можно посмотреть информацию, что бы использовать её в данном примере.

Octane 04.02.2010 18:40

var params = {
    action_button: action_button,
    jewerly_numb: jewerly_numb,
    jewerly_name: jewerly_name,
    jewerly_cat: jewerly_cat,
    jewerly_proba: jewerly_proba,
    jewerly_mass_b: jewerly_mass_b,
    jewerly_mass_n: jewerly_mass_n,
    jewerly_zalog: jewerly_zalog,
    jewerly_percent: jewerly_percent,
    jewerly_penya: jewerly_penya,
    action_flag: action_flag
};

for (var i=1; i<=numb; i++) {
    params["jewerly_title_add" + i] = $('input#JewerlyActionTitleAdd' + i).val();
}

$.post('index.php', params, …

maxtet 04.02.2010 18:54

Огромное спасибо, это как раз то, что мне нужно. После оптимизации код значительно уменьшился.


Часовой пояс GMT +3, время: 01:12.