Передача значения переменной в 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, время: 19:03. |