У меня есть страница с несколькими флажками, которая должна представлять состояние в базе данных.Флажки управляются AJAX, поэтому при их установке отправляется запрос на обновление состояния в базе данных.Если их представление устарело, то для соответствующих / связанных флажков обновляются представления, и пользователь уведомляется и должен повторить попытку.Когда я обновляю, я хотел бы, чтобы флажки представляли то, что фактически возвращается в HTML, сгенерированном из данных в базе данных, , а не некоторые произвольные предыдущие взаимодействия пользователя с элементами ввода.
Каксделать так, чтобы Firefox не обновлял эти флажки, с которыми я взаимодействовал, чтобы они были идентичны состоянию во вновь полученном HTML?
Проблема сбивает с толку, потому что:
Когда я обновляю страницу в Firefox и обновленный атрибут для флажка обновляется во вновь полученном HTML, Firefox обновит представление, как я и ожидал.
Однако, если я буду взаимодействовать с флажком, а затем обновлять, флажок ТА не будет обновляться для вновь полученного HTML.
т.е.Неважно, если checked="checked"
или проверенный атрибут не существует, Firerfox сохраняет его таким, пока я не выполню обновление смещения.
Я даже добавил window.onunload = function(){};
, потому что я думал, что это можетиз-за bfcache, но это не так.
Пробовал со следующими заголовками и все еще восстанавливал состояние.
HTTP/1.1 200 OK
Date: Thu, 15 Mar 2012 21:19:02 GMT
Server: Apache/2.2.20 (Ubuntu)
Expires: 0
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html;charset=ISO-8859-1
Пробовал зацикливание на элементах, и, несмотря на то, что проверенный атрибут несуществующий в исходном html, JavaScript считал проверенный атрибут «проверенным», поэтому невозможно восстановить значение из полученного источника после того, как Firefox восстановит значение из ранее введенного ввода.
Обратноетакже верно ... источник говорит checked="checked"
и JavaScript при загрузке считает проверенным undefined
.
Источник для оповещения о состоянии первого флажка.
window.onload = function() {
$('input[type="checkbox"]').each(function() {
alert($(this).attr('checked'));
return false
});
}