присвоить значение
всем привет! недавно начал изучение 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 нужно получить переменную |
function sel(x) { $.ajax({ type: 'POST', url: 'right.php', data: { sel: $('#type_cards_'+x).val() }, success: function(responce){ajData=responce} }); }; // и оперируй переменной ajData |
не работает :( (я так уже делал) пишет Uncaught ReferenceError: ajData is not defined
|
может быть ты поставил var перед ajData? var не должно быть
|
да нет. не ставил. я нашел причину почему не работает но это меня не спасает. функция 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; } |
а что у Вас отвечает
'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);} }); |
с этим разобрался. некорректно задаю вопрос. исправляюсь - вопрос в следующем: как выбрать все селекты формы и посчитать их value ?
|
dimon76, пробежаться циклом по всем select-ам формы и собирать их value, если вы имеете в виду только выбранный элемент...
var sel = document.getElementById("form").getElementsByTagName("select"), res = 0; for (i=0; i < sel.length; i++) { res += parseInt(sel[i].value); } |
да. ДА! ДА!!!!!!!!!!!!!!!!!!!!!!!!! спасибо! работает!!!
|
Часовой пояс GMT +3, время: 07:36. |