Я делаю веб-приложение для управления продуктом 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)