присвоить значение
всем привет! недавно начал изучение 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, время: 15:31. |