Передача значения переменной в JavaScript
Мне нужно при помощи скрипта считать значение переменной из формы и передать ее серверу так, чтобы она могла быть прочитана другим файлом, без перезагрузки страницы.
Вот элемент, из которого я хочу считать значение: <input type="text" name="<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>" value="1" id="qtty" style="width: 16px; height: 16px;"> Есть такой скрипт:
$('a.ajax').click(function() {
if(!$.returnFlag)
{
var qtty = document.getElementById('qtty');
var data = {};
data['qtty'] = $('#qtty').val();
$.get(
$(this).attr('href')+'&QTTY='+qtty.value,
data,
function (result) {
var el = document.getElementById(result['id']);
el.innerHTML = 'В корзине';
$('#'+result['id']).removeClass('ajax');
$('#'+result['id']).removeClass('byi');
$('#'+result['id']).addClass('byi2');
$.returnFlag = true;
el.href = '/personal/cart/';
ajaxCars();
alert("Data Loaded: " + data);
},
"json"
);
return false;
}
});
Он срабатывает при клике по данной ссылке: <p><strong><a href="<?=$addSrc?>" id="add<?=$arResult["ID"]?>" class="<?=$addClass?>"><?=$addLetter?></a></strong></p> Переменные для ссылки формируются так: $addSrc = '/ajax/addto/ajax_backend.php?IBLOCK_ID='.$arResult["IBLOCK_ID"].'&ID='.$arResult["ID"].'&TO=basket'; $addClass = 'add ajax byi'; $addLetter = 'Купить'; Само значение 'qtty' в скрипт передается - наблюдал через отладчик, но не передается в запрос GET. Я получаю сообщение: Data Loaded: [object Object] Перепробовал разные способы, описанные в документации, все равно результата нет. Помогите, пожалуйста, понять, где ошибка. |
Цитата:
а data -объект если напишите
alert("Data Loaded: " + data['qtty']);
то увидите содержимое |
Написал. Получаю Data Loaded: undefined.
Передаю данные как в примере в документацию:
$.get(
$(this).attr('href')+'&QTTY='+qtty.value,
{ name: "John", time: "2pm" },
function (result) {
var el = document.getElementById(result['id']);
el.innerHTML = 'В корзине';
$('#'+result['id']).removeClass('ajax');
$('#'+result['id']).removeClass('byi');
$('#'+result['id']).addClass('byi2');
// $('#'+result['id']).click(function() {window.location = this.href;});
$.returnFlag = true;
el.href = '/personal/cart/';
ajaxCars();
},
"json"
)
.done(function(data) { alert("Data Loaded: " + data['name']);})
.fail(function() { alert("Ajax Error"); });
И снова получаю: undefined |
Цитата:
и именно ответ сервера приходит в функцию -посмотреть его можно через инструменты разработчика встроенные в любой браузер |
Цитата:
|
в 7 строчке поставьте
alert("Data : " + data['qtty']);
если будет выводится-значит на сервер передается |
Цитата:
А как передать это значение внутрь $.get ? |
Указать вторым параметром.
|
Цитата:
|
Цитата:
|
Цитата:
|
Мне нужно, чтобы при помощи скрипта к данной ссылке:
$addSrc = '/ajax/addto/ajax_backend.php?IBLOCK_ID='.$arResult["IBLOCK_ID"].'&ID='.$arResult["ID"].'&TO=basket'; добавлялось '&QTTY=qtty', где qtty - это значение, переданное в скрипт здесь: var qtty = document.getElementById('qtty'); |
Часть url-а, начинающаяся от знака ? и есть query-строка. jQuery как раз перед запросом засовывает параметры в эту строку.
|
А что выполняется раньше: скрипт в этом файле или
/ajax/addto/ajax_backend.php? В файле /ajax/addto/ajax_backend.php есть такой код. if(!intval($_REQUEST['QTTY'])) $_REQUEST['QTTY'] = 1; else $_REQUEST['QTTY'] = intval($_REQUEST['QTTY']); Add2BasketByProductID(intval($_REQUEST['ID']), $_REQUEST['QTTY']); Но переменная $_REQUEST['QTTY'] туда никогда не передается, т. е. этот код не работает. Почему? |
Изучай запрос на вкладке "сеть" в отладчике браузера
|
В общем, запрос формируется правильно.
А как посмотреть, что происходит внутри /ajax/addto/ajax_backend.php ? Если написать просто echo, то в браузер ничего не выведется. Можно ли, например, сделать всплывающее окно, в котором выводить имя переменной? |
Попробовал заменить запрос GET на POST - тоже самое: переменная не передается! По-прежнему, undefined.
$('a.ajax').click(function() {
if(!$.returnFlag)
{
var qtty = document.getElementById('qtty');
var data = {};
data['QTTY'] = $('#qtty').val();
$.post(
$(this).attr('href'),
data,
function (result) {
var el = document.getElementById(result['id']);
el.innerHTML = 'В корзине';
$('#'+result['id']).removeClass('ajax');
$('#'+result['id']).removeClass('byi');
$('#'+result['id']).addClass('byi2');
$('#'+result['id']).click(function() {window.location = this.href;});
$.returnFlag = true;
el.href = '/personal/cart/';
ajaxCars();
},
"json"
)
.done(function(data) { alert("Quantity: " + data['QTTY']);})
.fail(function() { alert("Ajax Error"); });
return false;
}
});
|
| Часовой пояс GMT +3, время: 02:07. |