如果内容不同,则使用ajax更新页面

时间:2014-12-04 10:51:00

标签: javascript php jquery html 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,但渴望学习

此致

约翰

3 个答案:

答案 0 :(得分:2)

你可以添加一个名为&#34; id&#34;的隐藏输入。 (也就是说,包含问题的id)或者你的div的东西,然后创建另一个(隐藏的)div,ajax加载响应。只需比较&#34; id&#34;的值输入,如果它们不匹配,那么您实际上可以将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);
    });

答案 1 :(得分:0)

在mysql表中使用时间戳,然后制作另一个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);

答案 2 :(得分: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>
希望有所帮助。