Jquery Ajax忽略了请求

时间:2015-11-20 20:43:15

标签: javascript jquery ajax

$(document).ready(function() {
    $('#read').click(function () {
        $('#respond').html("Loading...");
        $.get("read_data.php", function(data) {
            $('#respond').html(data);
        });
    });
});

上面的代码调用一个简单的php页面来获取数据。它在第一个请求上运行良好但在此之后代码返回相同的数据,即使我更改了php文件,删除了整个数据源并更改了浏览器。看起来它是否缓存了第一个请求。

我搜索了错误日志但没有找到任何内容。 即使数据和页面都是外部的,它也会非常快速地响应。

2 个答案:

答案 0 :(得分:1)

这与缓存数据的浏览器有关。你可以通过传递服务器端页面可以忽略的附加参数来解决这个问题。

例如:

$(document).ready(function() {
    $('#read').click(function () {
        $('#respond').html("Loading...");
        $.get("read_data.php?rand="+Math.random(), function(data) {
            $('#respond').html(data);
        });
    });
});

随机值将被传递,浏览器将尝试缓存随收到的数据一起发送的数据,但由于每个请求(有效)都是唯一的,浏览器无法加载缓存的数据。

答案 1 :(得分:1)

除非另行指定或传递查询字符串,否则浏览器通常会缓存GET个请求。更改您的代码以使用$.ajax并将cache参数设置为false

$(document).ready(function() {
    $('#read').click(function () {
        $('#respond').html("Loading...");
        $.ajax({
            cache: false,
            url: "read_data.php"
        }).done(function(data) {
            $('#respond').html(data);
        });
    });
});

在内部,jQuery会在请求的末尾添加一个_={some random number}查询字符串参数,以防止缓存结果。