2014-12-04 44 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); 
    });