Javascript get返回旧数据
我的网站有一个控制页面,允许管理员更改网站的各种内容。 一个部分允许管理员更改页面。 我在选中的页面上使用jQuery.get来查找内容,然后将其显示在文本区域中。 这一切工作正常,管理员可以修改内容并保存它。 内容将被保存,页面在刷新后会发生更改。 但是,当我再次使用jQuery.get查找页面的新内容时,它会返回 原始页面内容,旧数据。 无论我刷新页面多少次,文本区域总是显示不应该存在的数据 不再 以下是独立的编辑页面代码:Javascript get返回旧数据,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我的网站有一个控制页面,允许管理员更改网站的各种内容。 一个部分允许管理员更改页面。 我在选中的页面上使用jQuery.get来查找内容,然后将其显示在文本区域中。 这一切工作正常,管理员可以修改内容并保存它。 内容将被保存,页面在刷新后会发生更改。 但是,当我再次使用jQuery.get查找页面的新内容时,它会返回 原始页面内容,旧数据。 无论我刷新页面多少次,文本区域总是显示不应该存在的数据 不再 以下是独立的编辑页面代码: <script type="text/javascript"
<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>
$(文档).ready(函数(){
$(“#编辑页”)。单击(函数(){
var page=$('#page').val();
$.get('pages/'+page+'.txt',{},函数(数据){
$('#display').val(数据);
});
});
$(“#保存页”)。单击(函数(){
var pageToChange=$('#page').val();
var contents=$('#display').val();
$.post('changepage.php',{page:pageToChange,text:contents},函数(数据){
$('#saveyay').html('Saved Changes');
});
});
});
和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请求 因此,请尝试在get请求()之前使用设置
cache:false
)
使用ajaxSetup()
设置它将为每个ajax请求将cache属性设置为false
如果只想为一个请求设置属性,则可以使用浏览器缓存结果,而不是使用自定义选项 从
get
切换到ajax
并将cache:false
作为选项之一传递
缓存(数据类型“script”和“jsonp”的默认值为true、false)类型: 布尔值
如果设置为false,则将强制不删除请求的页面 由浏览器缓存。注意:将缓存设置为false只会起作用 正确使用HEAD并获取请求。它通过附加 “{timestamp}”以获取参数。此参数不需要用于 其他类型的请求,IE8中发布URL时除外 这已经被一个GET请求了
这是因为html缓存正在本地保存 在javascript文件的开始位置:
$.ajaxSetup({
cache: false
});
浏览器缓存出现问题,请尝试执行一些操作,如将
?\uxAE=new Date().getTime()
添加到url或在特定请求上修复缓存头。但您不能告诉所有用户这样做。代码中的解决方案是必需的。在客户端禁用缓存不是解决方案。自从我们发表评论以来,答案已经更新了-可能是从其他人那里复制的。很抱歉,我误读了这个问题,以为他只是在测试时得到的。@Poploane我写了这个问题,甚至没有看到其他人的答案和你的评论,我不知道其他人已经发布了这个。我是通过谷歌搜索得到的。你不应该那么快下结论。
$.ajaxSetup({
cache: false
});