jQuery.get返回旧数据

jQuery.get returns old data

本文关键字:数据 返回 get jQuery      更新时间:2023-09-26

我的网站有一个控制页面,允许管理员更改网站的各种内容。其中一个部分允许管理员更改页面。我在所选页面上使用jQuery.get来查找内容,然后将其显示在文本区域中。这一切都很好,管理员可以修改内容并保存它。内容已保存,刷新后页面确实会发生更改。但是,当我再次使用jQuery.get查找页面的新内容时,它返回原始页面内容,旧数据。无论我刷新页面多少次,文本区域总是显示不应该存在的数据不再这是独立的编辑页面代码:

<script type="text/javascript">
$(document).ready(function() {
    $('#editpage').click(function() {
        var page = $('#page').val();
        $.get('pages/' + page + '.txt',{},function(data) {
            $('#display').val(data);
        });
    });
    $('#savepage').click(function() {
        var pageToChange = $('#page').val();
        var contents = $('#display').val();
        $.post('changepage.php',{page:pageToChange,text:contents},function(data) {
            $('#saveyay').html('<div class="success">Saved Changes</div>');
        });
    });
});
</script>

和changepage.php:

<?php
    if (array_key_exists('text',$_POST) AND array_key_exists('page',$_POST)) {
        file_put_contents('pages/'.$_POST['page'].'.txt', $_POST['text']);
    }
?>

我错过了什么?

一个可能的原因是缓存get请求。

因此,请尝试在获取请求()之前使用$.ajaxSetup()设置cache: false

$.ajaxSetup({
    cache: false
});

使用ajaxSetup()进行设置会将每个ajax请求的缓存属性设置为false。

如果您只想为一个请求设置属性,那么您可以使用$.ajax()而不是带有自定义选项

的$.get()

您的浏览器正在缓存结果。

get切换到ajax,并将cache: false作为选项之一传递。

缓存(默认值:true,对于dataType"script"answers"jsonp"为false)
类型:布尔值
如果设置为false,则会强制请求的页面不被由浏览器缓存。注意:将缓存设置为false只起作用正确处理HEAD和GET请求。它通过添加"_={timestamp}"添加到GET参数。不需要参数其他类型的请求,IE8中对URL进行POST时除外已经由GET请求的。

这是因为html缓存保存在本地。

在javascript文件的开头位置:

$.ajaxSetup({
    cache: false
});

浏览器缓存有问题,请尝试执行一些操作,如将?_= new Date().getTime()添加到url