|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.06.2013, 18:49 | #1 |
Форумчанин
Регистрация: 18.08.2009
Сообщений: 289
|
Определение select через ajax
На странице товара интернет-магазина выводится нормальная цена товара, цена со скидкой, а также списки <select> для выбора ширины и высота матраса.
Также есть mysql таблица, в которой содержатся отношения [id товара] - [ширина] - [высота] - [цена] - [цена со скидкой] При первоначальной загрузке страницы в select ширины попадает минимальное значение ширины из таблицы для данного товара. Чтобы сформировать список select высот товара, из таблицы выбираются все высоты для данного id товара и выбранной (в данном случае минимальной) ширины товара. Соответственно, в поля цены и цены со скидкой выводятся цифры, соответствующие выбранным в данный момент в списках select ширины и высоты Затем интереснее: при изменении ширины меняется select высот - он заполняется новыми "ширинами" для выбранной высоты. Это работает Далее на основании вновь измененной ширины и высоты должны выводится новые цены. Так вот тут не работает. Происходит такая вещь: при выборке цены используется не новая ширина, а ровно предыдущая. То есть js-код width_matras = document.getElementById('matras_wid th_select').value обновляет переменную ровно при следующем перевыборе списка ширины. Кто знает, почему ровно предыдущая? почему js не может сразу определить значения select-списка, только что замененного через ajax? Привожу код: select'ы ширины и высоты на странице товара PHP код:
Код HTML:
function ch_gabarity() { //получаем id товара var item_id = document.getElementById('item_id').value; //получаем выбранную ширину var width_matras = document.getElementById('matras_width_select').value; //ограничиваем список "высота" в зависимости от списка "ширина" abc_query = new XMLHttpRequest(); abc_query.onreadystatechange = function() { if (abc_query.readyState == 4 && abc_query.status == 200) { document.getElementById('matras_height_select').innerHTML = abc_query.responseText; } } abc_query.open("GET", "http://<?php echo $parameters['project_url']; ?>/system/ajax_action.php?tovar_id=" +item_id+ "&shirina=" +width_matras+ "&ch_select=1", true); abc_query.send(); } function ch_cena_of_gabarity() { //получаем id товара var item_id = document.getElementById('item_id').value; //получаем выбранную ширину var width_matras = document.getElementById('matras_width_select').value; //получаем выбранную высоту var height_matras = document.getElementById('matras_height_select').value; //меняем цену и цену со скидкой товара в зависимости от выбранной ширины или высоты xhttp=new XMLHttpRequest(); xhttp.onreadystatechange=function() { if (xhttp.readyState==4 && xhttp.status==200) document.getElementById('cena').innerHTML=xhttp.responseText; } xhttp.open("GET", "http://<?php echo $parameters['project_url']; ?>/system/ajax_action.php?tovar_id=" +item_id+ "&shirina=" +width_matras+ "&visota=" +height_matras+ "&ch_cena=1", true); xhttp.send(); } |
19.06.2013, 18:49 | #2 |
Форумчанин
Регистрация: 18.08.2009
Сообщений: 289
|
И php-код, исполняющий ajax-запрос
PHP код:
|
01.07.2013, 16:54 | #3 |
Форумчанин
Регистрация: 18.08.2009
Сообщений: 289
|
добавил в select пункт "выбрать высоту", что создало необходимость так или иначе выбирать какой либо его пункт. Теперь все ок
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Загрузка изображения через jquery ajax | lansh | JavaScript, Ajax | 8 | 03.01.2013 22:42 |
Отправка всего <select> через POST | Dexes | PHP | 5 | 30.01.2012 13:32 |
Сохранение данных в сессию через AJAX | Dexes | PHP | 11 | 17.01.2012 20:46 |
Получить список доступных баз данных через select. | hk47 | БД в Delphi | 5 | 13.04.2010 13:31 |
Ajax проблема с прокруткой колёсика обьекта Select | slips | JavaScript, Ajax | 4 | 31.12.2009 04:04 |