Я делаю веб-приложение для управления продуктом SKUS. Одна из них - связать SKU с названиями продуктов. В каждой строке таблицы я перечисляю SKU и показываю окно <select>
с названиями продуктов. Продукту, который в настоящее время ассоциируется с этим SKU в базе данных, присваивается атрибут типа selected="selected"
. Это можно изменить и обновить с помощью AJAX.
<option>
- 103, и этот список повторяется в <select>
для каждой строки.
С другого ввода на странице я использую jQuery AJAX-запросы для добавления новых ассоциаций SKU/product, и чтобы было ясно, что они добавлены мгновенно, я вставляю их в верхний стол с небольшим эффектом подсветки. Поскольку количество SKU увеличивается до 10 или около того, если я обновляю страницу (которая загружает все обратно из базы данных, заказанной по названию продукта), Firefox начинает показывать некоторые неправильные параметры по умолчанию. Он несовместим с тем, какой неправильный вариант он показывает, но он, кажется, смешивает параметры, существовавшие до перезагрузки страницы.
Если я проверяю <select>
с помощью Firebug, select="selected"
находится в правильном теге <option>
. Обновление страницы (или удаление и ввод URL-адреса этой страницы для возврата) не делает его корректным, но жесткое обновление (Ctrl + F5) делает.
Оба Chrome и IE7 отображают это правильно в первую очередь.
Моя теория заключается в том, что это результат ошибочной стратегии кеширования Firefox. Правильно ли это звучит? Есть ли способ, который я могу сказать в своем коде "если эта страница обновлена, сделать ее жестким обновлением - перезагрузить все с нуля?"
Update
Чтобы решить эту проблему, я изменил стратегии.
- Раньше я помещал
<select>
с длинным списком<option>
в каждой строке таблицы, с текущим значением, установленным по умолчанию - Теперь я помещаю текущее значение в
<span>
. Если пользователь нажимает кнопку "изменить", я заменяю<span>
на<select>
, а кнопка "change" становится кнопкой "подтвердить". Если они меняют параметры и нажимают подтвердить, AJAX обновляет базу данных, а<select>
возвращается к<span>
, на этот раз с новым значением.
Это имеет два преимущества:
- Он исправляет описанную выше ошибку.
- Для этого требуется far меньшее количество элементов DOM на странице (все эти избыточные
<option>
s)