我正在尝试创建一个投票应用程序,我需要一些帮助。
我遇到的问题是,我每隔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,但渴望学习
此致
约翰
答案 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>
希望有所帮助。