【问题标题】:Force browser to re-read ajax result强制浏览器重新读取ajax结果
【发布时间】:2013-07-19 01:46:21
【问题描述】:

此请求的内容每天都在变化:问题是浏览器(肯定是 IE 和 Chrome)总是显示旧结果(第一次获取),直到我清除缓存!

我该如何解决这个问题???

$('#q').keyup(function(){
    var param = $(this).val();
    if(param == ''){
        return
    }

    if(param != ''){
        $('#p_a').html('');
    }
    $.ajax({
        url: 'ajax.php',
        data: {qty: param},
        type: 'GET',
        success: function(result){
                    $('#p_a').html(result);
                 },
        error: function(result){
                    $('#p_a').html('Error');
                },
    });
});

PHP:

<?php
if(isset($_GET['qty'])){
    $cq = $_GET['qty'];
    $cq = $link->real_escape_string($cq);

    $GetP = $link->query("CALL GetPrice($cq)") or die('Query Error');

    if(mysqli_num_rows($GetP) === 1){
        while($p = mysqli_fetch_array($GetP)){
            echo $p['values'];
            echo $p['dates'];
        }
    }else{
        echo 'More Rows';
    }
}
?>

编辑:

这个 jQuery 函数是一个/正确/最好/好的工作解决方案吗?来自documentation

cache (default: true, false for dataType 'script' and 'jsonp') Type: Boolean If set to false, it will force requested pages not to be cached by the browser. Note: Setting cache to false will only work correctly with HEAD and GET requests. It works by appending "_={timestamp}" to the GET parameters. The parameter is not needed for other types of requests, except in IE8 when a POST is made to a URL that has already been requested by a GET.

【问题讨论】:

  • cache:false 添加到您发送到.ajax() 调用的参数中。您最好在 PHP 中适当地设置 Cache 标头,但这是一个不同的问题。

标签: php mysql ajax browser-cache


【解决方案1】:

您可以在$.ajax() 调用中设置cache: false,或者如果您希望缓存影响给定页面中的所有请求,您可以这样做

$.ajaxSetup({ cache: false });

这将在查询字符串中添加一个_=32409035094,它是一个名为_ 的参数和一个当前时间戳的值。这会创建一个唯一的请求字符串,从而导致从服务器而不是缓存中读取请求。

【讨论】:

  • 非常感谢您的详细解答!我对PHP 上的Cache headers 感兴趣,Mike W 在他的评论中描述。你能说更多关于这些标题的事情吗?谢谢!
  • 从我的经验来看,它不是这里的 php 缓存头。如果缓存未设置为 false,浏览器根本不会发出 ajax 请求。
  • 你可以尝试加入header("Cache-Control: no-cache, must-revalidate"),看看它是否会改变行为
  • 谢谢!实际上是浏览器缓存... ;-)
猜你喜欢
  • 1970-01-01
  • 2012-11-04
  • 2015-01-05
  • 1970-01-01
  • 2013-07-27
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
相关资源
最近更新 更多