jQuery.get返回旧数据

时间:2014-09-09 15:28:55

标签: javascript php jquery html

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

<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']);

    }

?>

我错过了什么?

4 个答案:

答案 0 :(得分:1)

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

因此,请尝试在get request()

之前使用$.ajaxSetup()设置cache: false
$.ajaxSetup({
    cache: false
});

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

如果您只想为一个请求设置属性,那么您可以使用$.ajax()代替$.get()自定义选项

答案 1 :(得分:0)

您的浏览器缓存结果。

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

  

缓存(默认值:true,false表示dataType&#39;脚本&#39;和&#39; jsonp&#39;)
类型:   Boolean如果设置为false,则会强制请求的页面不是   由浏览器缓存。注意:将缓存设置为false仅适用   正确使用HEAD和GET请求。它通过附加工作   &#34; _ = {}时间戳&#34;到GET参数。不需要该参数   其他类型的请求,除了在IE8中对URL进行POST时   这已经被GET要求了。

答案 2 :(得分:0)

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

在您的javascript文件开头位置:

$.ajaxSetup({
    cache: false
});

答案 3 :(得分:0)

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