2015-11-20 3 views
0
$(document).ready(function() { 
    $('#read').click(function() { 
     $('#respond').html("Loading..."); 
     $.get("read_data.php", function(data) { 
      $('#respond').html(data); 
     }); 
    }); 
}); 

В приведенном выше коде приведена простая страница php для получения данных. Он работал хорошо по первому запросу, но после этого код возвращал одни и те же данные даже после того, как я изменил файл php, удалил весь источник данных и изменил браузер. Похоже, если он закрепил первый запрос.JQuery Ajax игнорирует запрос

Я искал журналы ошибок, но ничего не найдено. Также он реагирует очень быстро, даже если данные и страница являются внешними.

+1

Использовать кеш-биттер. – Barmar

+0

Попросите вашего сервера дать клиенту указание не кэшировать его. –

ответ

1

Это связано с тем, что браузер кэшировал данные. Вы можете обойти это, передав дополнительный параметр, который можно просто игнорировать на стороне сервера.

Например:

$(document).ready(function() { 
    $('#read').click(function() { 
     $('#respond').html("Loading..."); 
     $.get("read_data.php?rand="+Math.random(), function(data) { 
      $('#respond').html(data); 
     }); 
    }); 
}); 

Случайное значение будет получить прошло, и браузер попытается кэшировать данные, отправленные с данными, полученными, но каждый запрос (эффективно) уникальный, браузер не может загружать кешированные данные.

1

Обычно кеш браузера GET запросов, если не указано иное, или строка запроса передана. Измените свой код, чтобы использовать $.ajax, и установите для параметра cache значение false.

$(document).ready(function() { 
    $('#read').click(function() { 
     $('#respond').html("Loading..."); 
     $.ajax({ 
      cache: false, 
      url: "read_data.php" 
     }).done(function(data) { 
      $('#respond').html(data); 
     }); 
    }); 
}); 

Внутри JQuery добавит параметр строки запроса в _={some random number} в конце запроса, чтобы предотвратить кэширование результата.

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