| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Определение select через ajax |
| Автор: Mastodont 19.6.2013, 17:46 | ||||||
| На странице товара интернет-магазина выводится нормальная цена товара, цена со скидкой, а также списки <select> для выбора ширины и высота матраса. Также есть mysql таблица, в которой содержатся отношения [id товара] - [ширина] - [высота] - [цена] - [цена со скидкой] При первоначальной загрузке страницы в select ширины попадает минимальное значение ширины из таблицы для данного товара. Чтобы сформировать список select высот товара, из таблицы выбираются все высоты для данного id товара и выбранной (в данном случае минимальной) ширины товара. Соответственно, в поля цены и цены со скидкой выводятся цифры, соответствующие выбранным в данный момент в списках select ширины и высоты Затем интереснее: при изменении ширины меняется select высот - он заполняется новыми "ширинами" для выбранной высоты. Это работает Далее на основании вновь измененной ширины и высоты должны выводится новые цены. Так вот тут не работает. Происходит такая вещь: при выборке цены используется не новая ширина, а ровно предыдущая. То есть js-код width_matras = document.getElementById('matras_width_select').value обновляет переменную ровно при следующем перевыборе списка ширины. Кто знает, почему ровно предыдущая? почему js не может сразу определить значения select-списка, только что замененного через ajax? Привожу код: select'ы ширины и высоты на странице товара
Сам ajax находится в конце <head>
И php-код, исполняющий ajax-запрос
|
| Автор: Arantir 19.6.2013, 17:58 |
| Проблема некоторых вопрошающих в том, что они выкладывают кучу ненужной информации и недостаточно нужной. Если у Вас проблемы с JS, то PHP тут вообще ни при чем. Только место занимает. Ваши коды у себя все равно никто запустить не сможет и то, что они выводят, придется "экстрасенсить". Картинка вообще непонятно зачем =) Можете привести код select-ов из исходного кода страницы? Можете показать, что выходит после ajax-запроса (как меняется select) - так же из исходного кода страницы. В общем только то, с чем работает Ваш JS-код, без лишнего. А так же то, каким образом Вы получаете ширину после ajax-запроса. Ajax-запрос происходит по какому событию? Изменение значения select? Скорее всего проблема в том, что Вы не учли тот факт, что запрос асинхронный. |
| Автор: valiko 19.6.2013, 21:49 | ||
| Привет. Я думаю что проблема в том, что вы генерируете список для select, а его самого не обновляете. Вариант 1. Генерируйте все вместе (select и options), таким образом предыдущее значение стереться с DOM. Вариант 2. Создайте div на JavaScript-е, добавьте в него новый select и удалите старый. Что то вроде этого скрипта. Надеюсь помог решить проблему
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51c1c4ac6ccc192c04000002#findElement_E7045_51c1fd1e6ccc19955e0005d6_0 |
| Автор: Mastodont 1.7.2013, 15:51 |
| Вариант 1 и вар. 2 что то не прокатил, хотя может не совсем правильно их использовал, так как js знаю чуть больше, чем основы. Но я добавил в select пункт "выбрать высоту", что создало необходимость так или иначе выбирать какой либо его пункт. Теперь все ок |