Я написал следующий jQuery для автоматического обновления страницы, содержащей опрос (для обновления текущей опции выигрыша)
function update() {
var vote_radio = $('input:radio[name=vote_radio]:checked').val();
$.ajax({
type: 'POST',
url: 'index.php',
data: 'refresh=true&maintain_radio='+ vote_radio,
timeout: 2000,
success: function(data) {
$("#current_body").html(data);
$("#notice_div").html('');
$("[name=vote_radio]").filter("[value="+vote_radio+"]").attr("checked","checked");
window.setTimeout(update, 2000);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#notice_div").html('Timeout contacting server..');
window.setTimeout(update, 60000);
}
});
};
$(document).ready(update);
На странице с именем "voice_radio" есть опрос по радио-кнопке, я также использую следующий код для Ajax-ответов на сервер:
$(function() {
$('.error').hide();
$('.failure').hide();
$('.success').hide();
$(".vote_submit").click(function() {
if (!$("input[@name='name']:checked").val()) {
$('.error').show();
return false;
}
var vote_radio = $('input:radio[name=vote_radio]:checked').val();;
var dataString = 'vote_radio='+ vote_radio;
$.ajax({
type: "POST",
url: "index.php",
data: dataString,
success: function() {
$('.success').show();
$('.failure').hide();
},
error: function() {
$('.failure').show();
$('.success').hide();
}
});
return false;
});
});
Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь выбирает свою опцию, пока страница автоматически обновляется, он возвращает выбранную опцию радио обратно в состояние, в котором она находилась, когда страница начала автообновление, что разочаровывает.
Кроме того, если второму сценарию предписано, чтобы класс .success появился, то, когда первый сценарий автоматически обновляет страницу, он снова скрывает класс успеха.