持久存在Ajax数据缓存问题

时间:2017-11-05 10:21:38

标签: jquery ajax

我使用POST获得以下Ajax代码:

<script type="text/javascript">
$('#consultdate').change(function() {
consultdate = $('#consultdate').val();
userid= '<?php echo $user_id;?>';
cat = '<?php echo $category;?>';
//alert(consultdate);
$.ajax({
type: "POST",
url: 'qry/date-time_qry.php',
headers: {
'Cache-Control': 'no-cache, no-store, must-revalidate', 
'Pragma': 'no-cache', 
'Expires': '0'
},
data: {consultdate : consultdate, userid : userid, cat : cat },
success: function(data)
{
alert(data);
$('input#consulttime').timepicker({ 'disableTimeRanges':JSON.parse(data)});
},
error : function() {
alert("error while loading data");
}
});
});
</script>

在我的服务器端代码中,我也放置了防止缓存标头。

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

ajax调用与jQuery Datepicker绑定。如果我选择一个日期,然后选择另一个日期,它将显示旧数据,这似乎是数据缓存问题。我也试过了cache: false而没有任何结果。它坚持不懈。除了使用GET和Math.random()之外的任何解决方案...... ??

我在以下链接中尝试了解决方案: Prevent browser caching of jQuery AJAX call result

1 个答案:

答案 0 :(得分:0)

尝试以下代码:

<script type="text/javascript">
    $('#consultdate').change(function() {
        consultdate = $('#consultdate').val();
        userid= '<?php echo $user_id;?>';
        cat = '<?php echo $category;?>';
        //alert(consultdate);
        $.ajax({
            cache: false,//<-- added cache false option
            type: "POST",
            url: 'qry/date-time_qry.php',
            headers: {
                'Cache-Control': 'no-cache, no-store, must-revalidate', 
                'Pragma': 'no-cache', 
                'Expires': '0'
            },
            data: {consultdate : consultdate, userid : userid, cat : cat },
            success: function(data)
            {
                alert(data);
                $('input#consulttime').timepicker({ 'disableTimeRanges':JSON.parse(data)});
            },
            error : function() {
                alert("error while loading data");
            }
        });
    });
</script>

我已添加cache选项中的内置false值,该值会在发出请求时自动将时间戳附加到查询字符串。希望这对你有用......!