簡體   English   中英

jQuery.get 返回舊數據

[英]jQuery.get returns old data

我的網站有一個控制頁面,允許管理員更改網站的各種內容。 一個部分允許管理員更改頁面。 我在選定的頁面上使用 jQuery.get 來查找內容,然后將其顯示在文本區域中。 這一切正常,管理員可以修改內容並保存。 內容被保存,頁面一旦刷新就會改變。 但是,當我再次使用 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>

並更改page.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 request() 之前使用$.ajaxSetup()設置cache: false

$.ajaxSetup({
    cache: false
});

使用ajaxSetup()設置它會將每個 ajax 請求的緩存屬性設置為 false。

如果您只想為一個請求設置屬性,那么您可以使用$.ajax()而不是$.get()與自定義選項

您的瀏覽器緩存結果。

get切換到ajax並傳遞cache: false作為您的選項之一。

緩存(默認值:true,對於 dataType 'script' 和 'jsonp' 為 false)
類型:布爾型
如果設置為 false,它將強制請求的頁面不被瀏覽器緩存。 注意:將緩存設置為 false 僅適用於 HEAD 和 GET 請求。 它的工作原理是將“_={timestamp}”附加到 GET 參數。 其他類型的請求不需要該參數,除非在 IE8 中對已由 GET 請求的 URL 進行 POST。

這是因為您的 html 緩存正在本地保存。

在您的 javascript 文件位置的開頭:

$.ajaxSetup({
    cache: false
});

瀏覽器緩存有問題嘗試做一些事情,比如將?_= new Date().getTime()到 url

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM