我使用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
答案 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
值,该值会在发出请求时自动将时间戳附加到查询字符串。希望这对你有用......!