2014-09-09 4 views
0

У меня есть страница управления для моего сайта, которая позволяет администратору изменять различные вещи о сайте. Один раздел позволяет администратору изменять страницы. Я использую jQuery.get на выбранной странице, чтобы найти содержимое, а затем отобразить это в текстовом поле. Все это прекрасно работает, и администратор может изменять содержимое и сохранять его. Содержимое сохраняется, и страница изменяется после обновления. Однако, когда я снова использую jQuery.get для поиска нового содержимого страницы, он возвращается с исходным содержимым страницы , старыми данными. Независимо от того, сколько раз я обновляю страницу, в textarea всегда отображаются данные, которые не должны существовать . Вот выделенный код редактирования страницы: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']); 

    } 

?> 

Что я пропустил?

+0

Исправьте заголовки кэширования. – Bergi

ответ

1

Возможная причина для этого - кэширование запроса на получение.

Так попробуйте установить cache: false с помощью $.ajaxSetup() до запроса ГЭТ()

$.ajaxSetup({ 
    cache: false 
}); 

Установка его с помощью ajaxSetup() установит свойство кэша в ложь для каждого AJAX запрос.

Если вы хотите установить свойство только для одного запроса, то вы можете использовать $.ajax() вместо $.get() с помощью пользовательских опций

+0

Или по этому конкретному запросу – Popnoodles

0

Вашего браузера кэширования результатов.

Переключить с get на номер ajax и передать cache: false в качестве одного из ваших вариантов.

кэша (по умолчанию: истина, ложь для DATATYPE «сценария» и «JSONP»)
Тип: Boolean
Если установлено значение ложно, оно будет принудительно запрошенные страницы не быть кэшируются браузером. Примечание. Установка кеша в false будет работать только с с запросами HEAD и GET. Он работает путем добавления «_ = {timestamp}» к параметрам GET. Параметр не нужен для других типов запросов, за исключением IE8, когда POST делается с URL , который уже был запрошен GET.

0

Это потому, что вы храните html-кеш локально.

В начале вашего яваскрипта место файла:

$.ajaxSetup({ 
    cache: false 
}); 
+0

Но вы не можете сказать всем пользователям об этом. Решением в коде является то, что требуется. – Popnoodles

+0

Отключение кеша на стороне клиента не является решением. – Bergi

+0

Ответ был обновлен - возможно, скопирован с чужого - так как мы сделали наши комментарии. – Popnoodles

Смежные вопросы