Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.09.2015, 16:35
Интересующийся
Отправить личное сообщение для Intrerio Посмотреть профиль Найти все сообщения от Intrerio
 
Регистрация: 13.09.2015
Сообщений: 25

Динамическая передача данных на Ajax
Здравствуйте форумчане. Собственно сначала код:
<script>
function osoby_calc2(){
var kil_osoby = document.getElementById('kil_osoby').value;
for( var i=0;i<kil_osoby;i++){
window['point_' + i] = document.getElementById("birthdayosoba_"+i).value;
alert(point_0);//чисто для проверки работоспособности
}
    $("#osoby_calc3").load("osoby_calc.php", { kil_osoby: kil_osoby
		 });	
}		 
</script>

А теперь поясню:
Есть форма в которую через аякс подгружаются поля. Каждому полю присвоен id, например birthdayosoba_0 birthdayosoba_1 и т.д. Есть также поле с количеством полей которое мне нужно добавить. Ну словом в самом скрипте я достаю количество полей и присваиваю значение переменной. Потом в цикле провожу присвоение динамичным переменным динамичные значения)). А дальше мне нужно выбросить полученные значения на обработчик через аякс.
А теперь загадка. Когда убираю
for( var i=0;i<kil_osoby;i++){
window['point_' + i] = document.getElementById("birthdayosoba_"+i).value;
alert(point_0);//чисто для проверки работоспособности
}
то данные нормально переносятся в обработчик. Но если присутствует часть кода, тогда алерт срабатывает но данные не уходят. Где я ошибся?
P.S.: очень попрошу не давать советов по поводу массивов и т.д. нет возможности их использовать, нужно отремонтировать данный пример. Заранее благодарю.
Ответить с цитированием
  #2 (permalink)  
Старый 13.09.2015, 20:41
Аспирант
Посмотреть профиль Найти все сообщения от newKingOfTheBlock
 
Регистрация: 13.09.2015
Сообщений: 32

Intrerio,
В смысле, они вообще не уходят, или не уходят до тех пор, пока вы не закроете алерт? На всякий случай, алерт -- это блокирующая операция, пока вы его не погасите, остальные строки не отработают.
Ответить с цитированием
  #3 (permalink)  
Старый 13.09.2015, 22:36
Интересующийся
Отправить личное сообщение для Intrerio Посмотреть профиль Найти все сообщения от Intrerio
 
Регистрация: 13.09.2015
Сообщений: 25

Исходя из всего описаного выше, понимаю что наверное, неправильно построил логику изначально.
Словом вот задача:
Есть форма в которую нужно внести информацию о договоре на предприятии. В самой форме есть данные как о самом договоре так и о лицах которые принимают участие в данном договоре. В форме есть отдельный раздел, в котором есть поле input . В это поле пользователь вбивает число (от 1 и до бесконенчости, в зависимости от количества лиц). После того как чсило внесено в поле, нажимая кнопку "Добавить лица" идет запрос через аякс в обработчик. В самом обработчике простой код - есть цикл который проходит количество раз (равно цеифре которую ввели), а в самом цикле система добавляет три поля input: ФИО, Дата рождения, Паспорт. После чего в форму добавляеються новые поля в том количестве которое нас нужно. Далее мы забиваем инфу о всех лицах договора. Ремарочка: сам договор это договор страхования. Ну пока вродь все понятно. Теперь нам нужно опять таки через аякс посчитать стоимость страховки на одного человека, после чего все просумировать и вывести пользователю. Я создал три аякса. В первом добавляю поля, во втором считаю стоимость с расчета на одно лицо и в третьем общая стоимость ( именно три потому что математика тут очень запутаная и иначе нельзя, просто не хочу углублятся в подробности). Теперь объясню о аякс-запросах. Каждый из них имеет вид типа:
<script>	
function osoby(){
var kil_osoby = document.getElementById('kil_osoby').value;

    $("#osoby").load("osoby.php", { kil_osoby: kil_osoby
		 });	
}
</script>

тоесть я создаю переменную, значение беру с конкретного поля,а потом через load отправляю данные в обработчик и вывожу в отдельный див эту красоту. Все вродь класно работало до того момента пока руководство не ткнуло носом что им нужно не по одному лицу подсчет делать а индивидуально по каждому. Чтоб вы понимали, расчет зависит от количества лиц и возраста каждого. Ну тут в голове прокрутил ситуацию и подумал?=:"Легко!".Ага, да да... Неделю бьюсь головою. Ну идем далее. В обработчике, который добавляет поля, в полях я изначально присваивал имена и айди типа birthday_1 birthday_2 и т.д. Поковыряв яву пришел к варианту описаному в первом посте. Но понимаю что каждую минуту натыкаюсь на страшный геморой и ищу просто нечеловеческие вариант решения проблемы. Сейчас подумую присвоить значения полю birthday[] и обрабатывать массив данных но тут для меня пока темный лес. Помогите кто чем может.
Ответить с цитированием
  #4 (permalink)  
Старый 13.09.2015, 22:37
Интересующийся
Отправить личное сообщение для Intrerio Посмотреть профиль Найти все сообщения от Intrerio
 
Регистрация: 13.09.2015
Сообщений: 25

Сообщение от newKingOfTheBlock Посмотреть сообщение
Intrerio,
В смысле, они вообще не уходят, или не уходят до тех пор, пока вы не закроете алерт? На всякий случай, алерт -- это блокирующая операция, пока вы его не погасите, остальные строки не отработают.
ПРобовал без алерта, таже ситуация, но за совет благодарен. Задумался о кардинальном изменении кода.
Ответить с цитированием
  #5 (permalink)  
Старый 13.09.2015, 23:24
Интересующийся
Отправить личное сообщение для Intrerio Посмотреть профиль Найти все сообщения от Intrerio
 
Регистрация: 13.09.2015
Сообщений: 25

Кстати сделал вот так
<script>
function osoby_calc2(){
var a=3;
for( var i=0;i<a;i++){
document.write(window['id_' + i] = document.getElementById("id_"+i).value);
}
		 	
}		 
</script>

но вижу только первое значение
Ответить с цитированием
  #6 (permalink)  
Старый 14.09.2015, 05:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Intrerio
В форме есть отдельный раздел, в котором есть поле input . В это поле пользователь вбивает число (от 1 и до бесконенчости, в зависимости от количества лиц). После того как чсило внесено в поле, нажимая кнопку "Добавить лица" идет запрос через аякс в обработчик. В самом обработчике простой код - есть цикл который проходит количество раз (равно цеифре которую ввели), а в самом цикле система добавляет три поля input: ФИО, Дата рождения, Паспорт. После чего в форму добавляеються новые поля в том количестве которое нас нужно.
А без ввода цифры и сообщения ее серверу нельзя добавить поля формы на клиенте?
Ответить с цитированием
  #7 (permalink)  
Старый 14.09.2015, 10:23
Интересующийся
Отправить личное сообщение для Intrerio Посмотреть профиль Найти все сообщения от Intrerio
 
Регистрация: 13.09.2015
Сообщений: 25

пробовал так, ноесть проблема тогда. Если делать на яве появление полей, тогда аякс который потом отправляет данные на математику, не видит новые поля, так как они создаются после загрузки страницы да и на яве.
Ответить с цитированием
  #8 (permalink)  
Старый 14.09.2015, 11:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Intrerio
Если делать на яве появление полей, тогда аякс который потом отправляет данные на математику, не видит новые поля
Обработчик как следует определите, и этой проблемы не будет. А можно и делегировать обработку общему родителю.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача через AJAX большого объема данных yambbkru AJAX и COMET 3 20.06.2015 15:18
Ajax передача большого количества данных diakon AJAX и COMET 3 29.05.2015 13:23
AJAX, Только передача данных. NewJSUser AJAX и COMET 14 12.01.2015 17:38
ajax передача данных с setInterval Segol Общие вопросы Javascript 0 07.07.2013 09:36
Передача данных через Ajax (IE) byFahrenheit AJAX и COMET 5 01.03.2013 16:06