Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   присвоить значение (https://javascript.ru/forum/dom-window/34226-prisvoit-znachenie.html)

dimon76 25.12.2012 00:58

присвоить значение
 
всем привет! недавно начал изучение js , в частности jQuery. столкнулся с такой проблемой. как присвоить переменной результат ajax запроса? т.е. вывести не просто html код в какой нибудь div, а именно присвоить к переменной, чтобы можно было дальше работать с ней. вот такой вот код имею :
function sel(x)
{

$.ajax({
                        type: 'POST',
                        url: 'right.php',
                        data: { sel: $('#type_cards_'+x).val() },
                        success: function(responce){ $('#price_card_'+x).html(responce)}

						
                });


};


/* Функция которая показывает и скрывает селекты на странице  */
function summ_numsel () {
var numsel = $('#number_cards').val(); // Получаем выбранное количество.


var summ = 0;
var spansel = ''; // Блок селекта

		//В зависимости от выбора количества - показываем такое же кол-во селектов.
		for(i=0;i<numsel;i++) {
		
			var num = i+1; // Порядковый номер селекта
			var spansel = spansel+'<div class="block_spansel">'+
									'<div class="num_card">Товар #'+num+'</div>'+
			
										'<select id="type_cards_'+num+'" name="cards_'+num+'" class="select_addcards" onchange="sel('+num+');" >'+
											'<?
$sel = mysql_query("SELECT * FROM `content_tovar` WHERE `type`=1");

 while ($row = mysql_fetch_assoc($sel)) {
     
	
		echo "<option value=\"$row[id]\">$row[name]</option>";
	
    }?>'+
										'</select>'+
									  '<input id="sum_'+num+'" name="sum_'+num+'" type="hidden" value="/*сюда нужно подставлять переменную из функции sel()*/" />'+
									'<div class="price_card" id="price_card_'+num+'">/*вот сюда тоже хочу подставлять переменную*/</div>'+
								  '</div>';
			
			
			summ += /* вот тут проблема */;
		

		
		
		}
		
		var out = $("#ncards").html(spansel); // Выводим селекты в див.
						
		//Выводим блок суммы заказа с кнопкой "Далее".
		var sumrow = '<div class="sum_info">'+
						'<div class="sum_txt">Сумма для оплаты: </div>'+
						'<div class="sum_num">'+summ+' $</div>'+
						'<input id="form_sim_save" type="hidden" name="sum_num" value="'+summ+'" />'+
						'<input id="form_sim_save" type="hidden" name="go_address" value="Далее" />'+
						'<input id="form_sim_save" type="submit" class="sum_b" value="" />'+
					 '</div>';
		
		$('#nscards').html(sumrow);
			
		return out;
}


в общем проблема я думаю понятна - вместо простого html нужно получить переменную

bushstas 25.12.2012 07:33

function sel(x)
{

$.ajax({
                        type: 'POST',
                        url: 'right.php',
                        data: { sel: $('#type_cards_'+x).val() },
                        success: function(responce){ajData=responce}

						
                });


};
// и оперируй переменной ajData

dimon76 25.12.2012 08:41

не работает :( (я так уже делал) пишет Uncaught ReferenceError: ajData is not defined

bushstas 25.12.2012 08:44

может быть ты поставил var перед ajData? var не должно быть

dimon76 25.12.2012 15:18

да нет. не ставил. я нашел причину почему не работает но это меня не спасает. функция sel() запускается только при выборе селекта. а мне нужно чтобы значение summ было 0 до выбора а потом менялось. чтобы ноль был я сделал, а вот чтобы менялась не могу. сейчас у меня так -
function sel(x)
{

$.ajax({
                        type: 'POST',
                        url: 'right.php',
                        data: { sel: $('#type_cards_'+x).val() },
                        success: function(responce){summ = responce;}
						
                });


};
for(i=0;i<numsel;i++) {
		
				var num = i+1; // Порядковый номер селекта
				//var price_card = 100-i;
			
	
			var spansel = spansel+'<div class="block_spansel">'+
									'<div class="num_card">Sim карта #'+num+'</div>'+
			
										'<select id="type_cards_'+num+'" name="cards_'+num+'" class="select_addcards" onchange="sel('+num+');" >'+
											'<?
$sel = mysql_query("SELECT * FROM `content_tovar` WHERE `type`=1");

 while ($row = mysql_fetch_assoc($sel)) {
     
	
		echo "<option value=\"$row[id]\">$row[name]</option>";
	
    }?>'+'</select>'+
		  '<input id="sum_'+num+'" name="sum_'+num+'" type="hidden" value="" />'+
			'<div class="price_card" id="price_card_'+num+'"></div>'+
		'</div>';
			
			
			
		

		
		
		}
		
		var out = $("#ncards").html(spansel); // Выводим селекты в див.
		
		// Стилизируем селекты.
		var params = {
							changedEl: ".select_addcards",
							visRows: 5,
							scrollArrows: true
						}
						cuSel(params);
						
		//Выводим блок суммы заказа с кнопкой "Далее".
		var sumrow = '<div class="sum_info">'+
						'<div class="sum_txt">Сумма для оплаты: </div>'+
						'<div class="sum_num">'+summ+' $</div>'+
						'<input id="form_sim_save" type="hidden" name="sum_num" value="'+summ+'" />'+
						'<input id="form_sim_save" type="hidden" name="go_address" value="Далее" />'+
						'<input id="form_sim_save" type="submit" class="sum_b" value="" />'+
					 '</div>';
		
		$('#nscards').html(sumrow);
			
		return out;
}

ivan.pshenicyn 25.12.2012 18:41

а что у Вас отвечает
'right.php'
на запрос, с параметром
{ sel: $('#type_cards_'+x).val() }
?
если я правильно понял, Вам необходимо переменную summ определить в глобальной области видимости, присвоить ей значение 0. но после запроса - заменить значение. Тогда, у Вас вроде все верно (хотя я так себе, по диагонали код пробежал глазами).
Вы можете достаточно удобно получать данные из запроса и работать с ними, если сделаете так
$.ajax({
    type: 'POST',
    url: 'right.php',
    dataType: 'json',
    data: { sel: $('#type_cards_'+x).val() },
    success: function(responce){summ = $.parseJSON(responce);}
});

dimon76 26.12.2012 01:01

с этим разобрался. некорректно задаю вопрос. исправляюсь - вопрос в следующем: как выбрать все селекты формы и посчитать их value ?

lord2kim 26.12.2012 10:04

dimon76, пробежаться циклом по всем select-ам формы и собирать их value, если вы имеете в виду только выбранный элемент...
var sel = document.getElementById("form").getElementsByTagName("select"), res = 0;
for (i=0; i < sel.length; i++) {
    res += parseInt(sel[i].value);
}

dimon76 26.12.2012 10:28

да. ДА! ДА!!!!!!!!!!!!!!!!!!!!!!!!! спасибо! работает!!!


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