2012-02-08 58 views
1

我寫了下面的jQuery的autorefreshing包含投票表決頁的頁(保持更新當期中獎選項)設置單選按鈕使用jQuery而autorefreshing

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); 

有一個單選按鈕投票的名爲「vote_radio」頁面,我也用下面的代碼與,阿賈克斯的答案到服務器:

$(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類已被告知由第二個腳本出現,那麼當第一個腳本自動刷新頁面時,它會再次隱藏成功類。

回答

0

爲什麼在啓動AJAX調用之前將vote_radio元素恢復爲該值?

權被覆蓋以前只是讀它,讓你保持當前值(即使它改變沒有被提交尚未

所以只是改變成功回調至

success: function(data) { 
     var vote_radio = $('input:radio[name=vote_radio]:checked').val(); 
     $("#current_body").html(data); 
     $("#notice_div").empty(); 
     $("[name=vote_radio]").filter("[value="+vote_radio+"]").attr("checked","checked"); 
     window.setTimeout(update, 2000); 
    } 

但是,一般來說,正確的方法是隻更新頁面中需要更新的部分,而不是整個頁面......這就是AJAX的全部要點..

+0

感謝您的回答。但是,當我在您的回調函數中替換整個函數不會運行。 我真正需要做的是不斷檢查頁面是否需要更新,如果有,請運行AJAX。頁面內容每120秒更改一次,您是否知道如何以某種方式讓時間檢查器在後臺運行,並在時間降到零度以下時讓它調用刷新功能? 再次感謝。 – dplanet 2012-02-08 13:42:19

相關問題