У меня есть набор divs, каждый из которых содержит набор продуктов для сайта электронной почты. Только один div отображается в тот момент, когда нажимается кнопка определенного запаса.ajax получает предыдущий ответ при нажатии кнопки «Назад назад»?
Когда пользователь открывает новый div, у меня есть метод ajax, отправьте $_get variable
в файл php, который обновляет базу данных с номером панели, поэтому я могу сохранить историю панели. Когда пользователь нажимает на продукт, отображаемый внутри div, он переводит их на страницу сведений, а затем, если пользователь решает продолжить просмотр и нажимает кнопку «Назад», чтобы вернуться к отображению продукта div, еще один ajax, на $(window).load
ajax вызывает файл php, который извлекает номер панели из базы данных и автоматически показывает последний видимый div, который пользователь открыл, когда страница перезагружается.
Хотя по какой-то причине ajax получает предыдущий ответ вместо правильного при нажатии кнопки «Назад», даже если база данных обновлена с правильным номером панели. Но если вместо этого я тестирую кнопку обновления, все работает нормально, когда страница перезагружается.
Пример:
Открыть "одежды" ДИВ -> Аякса посылает "2" в PHP файл -> PHP обновления файла базы данных с "2" -> пользователь переходит прочь, щелчки назад, ajax вызовы в php-файл -> php-файл извлекает номер панели «2» из базы данных и открывает «apparel» div через функцию успеха вызова ajax. все работает хорошо
но теперь, если я открыть другую панель ..
Open "коллекционный" ДИВ -> Аякса посылает "1" в PHP файл -> обновления PHP файл базы данных с «1» -> пользователь перемещается, кликает назад, ajax вызывает файл php ->, но на этот раз он получает «2» в ответе вместо «1» и снова открывается «одежда» div вместо "collectable" div
Почему ajax получает предыдущий ответ «2» вместо «1», даже если база данных обновлена с правильным номером панели.? Если я тестирую кнопку обновления, чтобы перезагрузить страницу после открытия разных div, она всегда отображает правильный div, но если я использую кнопку «Назад», она просто отображает старый div.
Ajax отправить методу
// user clicks apparel panel
$("#stockApparel").click(function(){
var $apparel = "2";
$.ajax({
url: "php/panel.php",
data: { panel_update: $apparel },
type: "get",
dataType: "text",
success: function(response){
},
});
var divPosition = $('#shippingImg').offset();
$('html, body').animate({scrollTop: divPosition.top}, "slow");
$("#stockButtons").animate({left: '1140px'});
$("#new").animate({left: '-470px'});
$("#apparel").show(700);
$("#marketing").hide(100);
});
RETRIEVE на оконном нагрузки
$(window).load(function(){
$get = "get_panel";
$.ajax({
url: "php/panel.php",
data: { panel_get: $get },
type: "get",
dataType: "text",
success: function(response){
switch (response) {
case "1": // collectable panel
$("#stockButtons").animate({left: '1140px'});
$("#new").animate({left: '-470px'});
$("#collectable").show(700);
$("#marketing").hide(100);
var divPosition = $('#shippingImg').offset();
$('html, body').animate({scrollTop: divPosition.top}, "slow");
alert(response);
break;
case "2": // apparel panel
$("#stockButtons").animate({left: '1140px'});
$("#new").animate({left: '-470px'});
$("#apparel").show(700);
$("#marketing").hide(100);
var divPosition = $('#shippingImg').offset();
$('html, body').animate({scrollTop: divPosition.top}, "slow");
alert(response);
break;
default:
}
},
});
});
PHP файл
<?php
require_once 'connect.php';
if (isset($_GET['panel_update'])) { // Sets the panel number
$set = $_GET['panel_update'];
$sql = "UPDATE panel SET panel='$set' WHERE id=1";
if ($mysqli->query($sql) === true) {
} else echo "mysql error:" . $mysqli->error;
}
if (isset($_GET['panel_get'])) { // Retrieves the panel number
$get = $_GET['panel_get'];
$sql = "SELECT * FROM panel WHERE id=1";
$result = $mysqli->query($sql);
$row = $result->fetch_assoc();
echo $row['panel'];
}
?>
ahhh okay, когда я нажимаю кнопку «Назад» в заголовках, я вижу: Код состояния: 200 OK (из кеша). Когда я нажимаю кнопку обновления, я получаю код состояния: 200 OK. Спасибо! – user3796133
Вот небольшая функция, которую я использую, когда мне нужно вручную принудительно отключить кеш: 'function emit_nocache_headers() { header ('Pragma: no-cache'); header ('Cache-Control: no-store, no-cache, must-revalidate, post-check = 0, pre-check = 0'); header ('Истекает: Чт, 19 ноября 1981 года 08:52:00 GMT'); } ' –
Спасибо, друг, привет! – user3796133