Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果内容不同,则使用ajax更新页面_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

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

Javascript 如果内容不同,则使用ajax更新页面,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我正在尝试创建一个投票应用程序,我需要一些帮助 我遇到的问题是,我每3秒钟发送一次请求,表单中选择的所有选项在每次重新加载时都会重置。(因此,用户必须做出选择并在3秒内提交。) $(文档).ready(函数(){ $.ajaxSetup({cache:false}); setInterval(函数(){ $('respnseDiv').load('response.php'); }, 3000); }); 这就是我目前用来填充div的内容 我希望jquery检查每个响应的内容,看看是否与上一

我正在尝试创建一个投票应用程序,我需要一些帮助

我遇到的问题是,我每3秒钟发送一次请求,表单中选择的所有选项在每次重新加载时都会重置。(因此,用户必须做出选择并在3秒内提交。)


$(文档).ready(函数(){
$.ajaxSetup({cache:false});
setInterval(函数(){
$('respnseDiv').load('response.php');
}, 3000);
});
这就是我目前用来填充
div的内容

我希望jquery检查每个响应的内容,看看是否与上一个相同,如果相同,不要更新div,如果内容不同(即要投票的新问题),将其加载到div中

我不太擅长js/jquery,但渴望学习

问候


Johan

在mysql表中使用时间戳,然后创建另一个php文件,用于根据您的条件检查最新的时间戳。检查此时间戳并将最新数据库更新的时间戳保存在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);
var-latest\u timestamp=0;
setInterval(函数(){
$.ajax({
url:“check_timestamp.php”,
键入:“获取”,
成功:函数(最新的\u db\u时间戳){
if(最新\u时间戳<最新\u db\u时间戳)
{
$('respnseDiv').load('response.php');
}
}
});
}, 3000);

使用全局变量将每个响应与上一个响应进行比较,并仅在存在差异时修改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>

var last_response=null;
$(文档).ready(函数(){
$.ajaxSetup({cache:false});
setInterval(函数(){
var res=$.get('response.php');
如果(res!=最后一次响应){
$('respnseDiv').html(res);
最后的_响应=res;
}
}, 3000);
});

希望能有所帮助。

您可以在div中添加一个名为“id”的隐藏输入(即,包含问题的id)或其他内容,然后创建另一个(隐藏)div,ajax将响应加载到该div。只需比较“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);
    });

请尝试向您的问题中添加一些代码以使其更清晰。我正在使用的jquery中添加了一些代码,我现在不在计算机上,因此我无法访问我的php代码。如果我理解得很好,您希望缓存用户对问题的响应。只需将最后一个答案存储在一个变量中,并在用户尝试给出新响应时进行交叉检查。我可能有点不清楚,我希望jquery检查每个响应的内容,看看是否与最后一个相同,如果相同,则不更新div,如果内容不同(即要投票的新问题),将其加载到div中。@mysteryos这似乎是我正在寻找的,我会尽快尝试
$(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);
    });