GET запрос в консоли видно со всеми новыми параметрами, включая и ajax=true.
В нем заголовок, содержимое новой страницы, код ответа ОК 200.
Сообщений об ошибках в консоли тоже нет.
Но в браузере контент не обновляется.
Если сделать логирование, то из сообщений приходит только первое here1, что идет до вызова основной функции.
Все остальные сообщения в консоли не появляются.
До этого писал более примитивную функцию обновления контента, она криво косо, но работала. Там через время глюки с кэшированием истории возникали. Тут функция уже доработанная с учетом истории, но почему-то не хочет работать.
В чем может быть проблема?
Помогите, кто хорошо разбирается в AJAX.
<script>
$(document).on("click", "a", function(evt) {
evt.preventDefault();
var redirect_url = $(this).attr('href');
console.log("here1");
$.ajax({
'url': $(this).attr('href'),
cache: false,
data: {
ajax: true
},
dataType: "json",
success: function(json) {
console.log("here");
if (json.redirect) {
if (json.load_html) {
// Если доступен API истории
if (!(typeof history.pushState === 'undefined')) {
history.pushState({
url: redirect_url,
title: document.title
},
document.title, // Можно также использовать json.title для установки заголовка предыдущей страницы на сервере
redirect_url
);
}
console.log("3");
document.open();
document.write(json.html);
document.close();
} else {
console.log("2");
window.location = redirect_url;
}
} else {
console.log("1");
$('#content').html(json.message);
}
console.log(json.html);
},
});
return false; //что бы не выполнять переход дефолтный
});
</script>
PS.
Может ли ошибка быть в сессии, которая передается в ссылках?:
r='.$r.'&'.SID.''
JSON возвращает конец ссылки как:
r=88&&ajax=true&_=1674977127135
Номер сессии всегда передается в коде, но он не виден в адресной строке.
А здесь JSON с номером сессии.
Концовки ссылок с GET параметрами в json, из консоли:
&r=88&&ajax=true&_=1674977127137
&r=88&&ajax=true&_=1674977127138
&r=88&&ajax=true&_=1674977127139
&r=88&&ajax=true&_=1674977127140