Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Передача параметров в цикле

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
maxtet
Отправлено: 04 Февраля, 2010 - 18:37:06
Post Id



Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Февр. 2009  
Откуда: г.Херсон


Помог: 0 раз(а)




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

CODE (javascript):
скопировать код в буфер обмена
  1. function jewerly_buyout_refresh(numb)
  2. {
  3.  
  4.   var action_flag = $('input#JewerlyActionFlag').val();
  5.   var jewerly_numb = $('select#JewerlyActionNumber').val();
  6.   var action_button = $('input#JewerlyActionButton').val();
  7.   var jewerly_name = $('input#JewerlyActionName').val();
  8.   var jewerly_cat = $('select#JewerlyActionCat').val();
  9.   var jewerly_proba = $('select#JewerlyActionProba').val();
  10.   var jewerly_mass_b = $('input#JewerlyActionMassB').val();
  11.   var jewerly_mass_n = $('input#JewerlyActionMassN').val();
  12.   var jewerly_zalog = $('input#JewerlyActionZalog').val();
  13.   var jewerly_percent = $('input#JewerlyActionPercent').val();
  14.   var jewerly_penya = $('input#JewerlyActionPenya').val();
  15.  
  16.   var jewerly_title_add = [];
  17.   for (var i=1; i<=numb; i++)
  18.   {
  19.     jewerly_title_add[i] = $('input#JewerlyActionTitleAdd' + i).val();
  20.   }
  21.  
  22.   $.post('index.php',
  23.   {
  24.     action_button: action_button,
  25.     jewerly_numb: jewerly_numb,
  26.     jewerly_name: jewerly_name,
  27.     jewerly_cat: jewerly_cat,
  28.     jewerly_proba: jewerly_proba,
  29.     jewerly_mass_b: jewerly_mass_b,
  30.     jewerly_mass_n: jewerly_mass_n,
  31.     jewerly_zalog: jewerly_zalog,
  32.     jewerly_percent: jewerly_percent,
  33.     jewerly_penya: jewerly_penya,
  34.     jewerly_title_add1: jewerly_title_add[1],
  35.     jewerly_title_add2: jewerly_title_add[2],
  36.     jewerly_title_add3: jewerly_title_add[3],
  37.     jewerly_title_add4: jewerly_title_add[4],
  38.     action_flag: action_flag
  39.   },
  40.   function(data)
  41.   {
  42.     $('div#JewerlyActionWindows').load('modules/mod_jewerly/actions/jewerly_buyout.php',
  43.     {
  44.       action_button: action_button,
  45.       jewerly_numb: jewerly_numb,
  46.       jewerly_name: jewerly_name,
  47.       jewerly_cat: jewerly_cat,
  48.       jewerly_proba: jewerly_proba,
  49.       jewerly_mass_b: jewerly_mass_b,
  50.       jewerly_mass_n: jewerly_mass_n,
  51.       jewerly_zalog: jewerly_zalog,
  52.       jewerly_percent: jewerly_percent,
  53.       jewerly_penya: jewerly_penya,
  54.       jewerly_title_add1: jewerly_title_add[1],
  55.       jewerly_title_add2: jewerly_title_add[2],
  56.       jewerly_title_add3: jewerly_title_add[3],
  57.       jewerly_title_add4: jewerly_title_add[4],
  58.       action_flag: action_flag
  59.     }
  60.     );
  61.   });
  62. }


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


CODE (javascript):
скопировать код в буфер обмена
  1. jewerly_title_add1: jewerly_title_add[1],
  2. jewerly_title_add2: jewerly_title_add[2],
  3. jewerly_title_add3: jewerly_title_add[3],
  4. jewerly_title_add4: jewerly_title_add[4],



Хотелось бы реализовать в цикле.
 
 Top
Ch_chov
Отправлено: 04 Февраля, 2010 - 19:13:38
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




1. Для чего нужно делать 2 запроса с одинаковыми параметрами?
2. Зачем такие длинные имена переменных?
3. Может стоит данные из формы сразу сохранить в объект (массив), а потом подставлять его в запрос?
4. jewelry?
 
 Top
maxtet
Отправлено: 04 Февраля, 2010 - 19:26:56
Post Id



Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Февр. 2009  
Откуда: г.Херсон


Помог: 0 раз(а)




Ch_chov пишет:
1. Для чего нужно делать 2 запроса с одинаковыми параметрами?
2. Зачем такие длинные имена переменных?
3. Может стоит данные из формы сразу сохранить в объект (массив), а потом подставлять его в запрос?
4. jewelry?


1. Первый запрос отправляет параметры на сервер, второй перегружает часть страницы и передает ей эти параметры
2. Мне так удобнее))
3. В этом вся проблема.
4. Опечатался, но исправлять не буду - слишком много буков в коде)
 
 Top
Ch_chov
Отправлено: 04 Февраля, 2010 - 19:36:15
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Попробуй использовать фильтры jQuery, что получить все нужные данные из формы сразу.

Или используй какой нибудь плагин для работы с ajax формами.
http://www[dot]linkexchanger[dot]su/2008/45[dot]html


Цитата:
Первый запрос отправляет параметры на сервер, второй перегружает часть страницы и передает ей эти параметры

Всё равно не понятно. Второй запрос тоже ведь отправляет эти же самые данные?

(Отредактировано автором: 04 Февраля, 2010 - 20:02:58)

 
 Top
JustUserR
Отправлено: 05 Февраля, 2010 - 00:59:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




maxtet пишет:
Функция работает, но хотелось бы, услышать рекомендации как её оптимизировать
Очень много переменных с одинаковым префиксом - не проще ли все это положить в массив jewerly тем более что его будет проще передавать по ссылке если понадобиться


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
maxtet
Отправлено: 05 Февраля, 2010 - 12:22:28
Post Id



Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Февр. 2009  
Откуда: г.Херсон


Помог: 0 раз(а)




JustUserR пишет:
maxtet пишет:
Функция работает, но хотелось бы, услышать рекомендации как её оптимизировать
Очень много переменных с одинаковым префиксом - не проще ли все это положить в массив jewerly тем более что его будет проще передавать по ссылке если понадобиться


Проще, но как это реализовать в написанной функции - передача параметров в цикле?
 
 Top
JustUserR
Отправлено: 06 Февраля, 2010 - 01:41:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




maxtet пишет:
Проще, но как это реализовать в написанной функции - передача параметров в цикле?
Если не использовать jquery то можно самому напрямую сгенерировать POST-запрос и скопировать в него значения из массива с помощью цикла очень несложно - достаточно просто пройтись по массиву и добавить в POST-запрос значения типа "&jewerly_title_add"+i+"="+escape(jewerly_title_add[i]) в цикле по переменной i
В вашем примере можно динамисески создать передаваемый Object для POST-запроса и положить в него значения из цикла с помощью скобочной формы записи полей объекта - например var post_obj=new Object; post_obj["чтото"]="чтото"; for(var i=0;i<numb;i++) {post_obj["jewerly_title_add"+i]=jewerly_title_add[i]}
Также можно использовать функцию eval если вам обязательно необходим анонимный объект


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
maxtet
Отправлено: 06 Февраля, 2010 - 11:55:40
Post Id



Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Февр. 2009  
Откуда: г.Херсон


Помог: 0 раз(а)




Спасибо, я сумел реализовать механизм передачи параметров в цикле с помощью такой конструкции.
CODE (javascript):
скопировать код в буфер обмена
  1. for (var i=1; i<=numb; i++)
  2.   {
  3.     params["jewerly_title_add" + i] = $('input#JewerlyActionTitleAdd' + i).val();
  4.     params["jewerly_mass_b_add" + i] = $('input#JewerlyActionMassBAdd' + i).val();
  5.     params["jewerly_mass_n_add" + i] = $('input#JewerlyActionMassNAdd' + i).val();
  6.   }
  7.  

Просто все данные занес в объект params.

(Отредактировано автором: 06 Февраля, 2010 - 16:59:49)

 
 Top
JustUserR
Отправлено: 07 Февраля, 2010 - 00:46:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




maxtet пишет:
Спасибо, я сумел реализовать механизм передачи параметров в цикле с помощью такой конструкции
Пожалуйста! Как видите JS достаточно динамический язык и можно обойтись без формирования лишних объектов - в общем случае поможет функция eval если переменные будут статическими


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB