Показать сообщение отдельно
  #1 (permalink)  
Старый 29.01.2016, 10:54
Новичок на форуме
Отправить личное сообщение для thesun Посмотреть профиль Найти все сообщения от thesun
 
Регистрация: 29.01.2016
Сообщений: 5

Значение переменной присваивается только со второй попытки
Добрый день. Помогите разобраться.
На сайте стоит калькулятор стоимости. По нажатию запускается процедура проверки из которой стартует процедура обсчета. Есть несколько полей списков. На основании выбранного пункта делается запрос к базе для получения переменной участвующей в расчете. Проблема в том что правильное значение получается только при повторном запуске функции.
function raschet_zakaza(){
			 
			 	Perimetr();  // расчитываем периметр и площадь
				// проверяем выбранали постпечатная обработка и какие виды
					// ламинирование start
					   if(($('#laminirovanieYes').is(":checked")) && ($('#typeMaterLam').val().length) ) { 
			 														
								
								// создаем запрос к БД посредством обращения к файлу all_base.php 
								
								$.post("all_base.php",{"var1":"2","var2":temp1,"var3":param}, function(data){
									    a1=data;
										// alert("первое окно"+a1);
										 klsum=Math.round(a1*squre*tir*100)/100;
									   })
									   	// alert("второе окно"+a1);
									    // a1= parseFloat($('#klperemen').text());  // рублей за метр
										 
										 // alert("первое окно"+a1);								  
							  
					}
						else { 								
								alert('меняем');
								klsum=0;
							}
					// ламинирование end
				summa=Math.round((kmsum+klsum+knsum+kgsum+kpsum+krsum)*100)/100;
				$('#price').text(summa);
			   $('#price1').html(perimetr+'</br>ширина -'+shirina+'</br>высота -'+visota+'</br>площадь'+squre+'</br>ламинирование = '+klsum+'</br> накатка = '+knsum+'</br>'+'тираж='+tir+'</br> клей='+kgsum+'</br> подрезка='+kpsum+'</br> рамка='+krsum+'</br> temp1='+temp1+'</br> A1='+a1);

Все работает если получение переменной вешать на событие изменения для списка, но это неудобно в целом.
И еще одна особенность.
Если раскомментировать строки
alert("первое окно"+a1);
и
alert("второе окно"+a1);
то происходит следущее:
первое окно будет показывать что переменная считалась из БД
второе окно будет показывать предыдущее значение переменной
значение же на сайте будет правильным. если их закомментировать обратно то на сайте правильное значение можно получить только два раза запустив процедуру расчета.

Может кто нибудь знает в чем проблема.
Спасибо.
Ответить с цитированием