2014-12-04 102 views
0

我正在嘗試創建一個投票應用程序,我需要一些幫助。如果內容不同,使用ajax更新頁面

我遇到的問題是,我每3秒發送一次請求,並且在表單中選擇的所有選項都會在每次重新加載時重置。 (因此,用戶將不得不做出選擇,並在3秒鐘內提交。)

<script type="text/javascript"> 
    $(document).ready(function() { 
     $.ajaxSetup({ cache: false }); 
     setInterval(function() { 
      $('#respnseDiv').load('response.php'); 
     }, 3000); 
    }); 
</script> 

這就是我目前使用填充div

我想jQuery來檢查每個內容看看是否與最後一個相同,如果是,不更新div,如果內容不同(即投票新問題),將其加載到div中。

我不在JS/jQuery的非常好,但好學

問候

約翰在你的MySQL表

+0

嘗試和一些代碼添加到您的問題,以使其更清晰 – roryok 2014-12-04 10:53:16

+0

加我使用jQuery的,我不是在我的電腦現在,所以我沒有訪問我的PHP代碼大氣壓 – 2014-12-04 11:00:51

+0

如果我理解的很好,您想緩存用戶對問題的回覆。只需將最後一個答案存儲在變量中,並在用戶嘗試提供新答案時進行交叉檢查。 – Mysteryos 2014-12-04 11:05:52

回答

0

使用時間戳,然後再拍PHP文件檢查與最新的時間戳你的條件。檢查此時間戳並將最新的db-update的時間戳保存在一個javascript變量中。

var latest_timestamp = 0; 

setInterval(function() { 

    $.ajax({ 
     url: "check_timestamp.php", 
     type: "GET", 
     success: function(latest_db_timestamp){ 
      if(latest_timestamp < latest_db_timestamp) 
      { 
       $('#respnseDiv').load('response.php'); 
      } 
     } 
    }); 

}, 3000); 
0

使用一個全局變量來比較每個響應與最後一個響應,並且只有在有差異時才修改html。

在這裏你去:

<script type="text/javascript"> 
    var last_response = null; 
    $(document).ready(function() { 
     $.ajaxSetup({ cache: false }); 
     setInterval(function() { 
      var res = $.get('response.php'); 
      if (res != last_response) { 
       $('#respnseDiv').html(res); 
       last_response = res; 
      } 
     }, 3000); 
    }); 
</script> 

希望幫助。

+0

這似乎是我正在尋找,將嘗試儘快 – 2014-12-08 14:45:18

2

您可以添加一個名爲「id」(即包含問題的id)的隱藏輸入或其他內容,然後創建另一個(隱藏的)div,Ajax將加載該響應。簡單地比較「id」輸入的值,如果它們不匹配,那麼實際上可以將html加載到原始div中。就像這樣:

$(document).ready(function() { 
     $.ajaxSetup({ cache: false }); 
     setInterval(function() { 
      $('#hiddenDiv').load('response.php'); 
      if ($("#hiddenDiv input.id").val() != $('#respnseDiv input.id').val()) 
      { 
       $('#respnseDiv').html($('#hiddenDiv').html()); 
      }    
     }, 3000); 
    }); 
相關問題