Запускать функцию Ajax с действиями назад / вперед?
Во-первых, я хотел бы поблагодарить всех за то, что прочитали это и ответили на мои вопросы. Помощь, оказанная на сегодняшний день, была неоценима, и я стал лучшим программистом благодаря помощи, которую мне оказали.
К проблеме под рукой. Боюсь, это немного грубо, но сценарий, представленный ниже, по большей части работает.
Проблема в том, что при сохранении истории, когда пользователь переходит назад или вперед, страница не изменяется. Есть ли у вас какие-либо идеи, что я могу сделать, чтобы изменить это, чтобы сработала функция go?
$(document).ready(function(){
$("a").click(function() {
if (strpos($(this).attr('href'), 'mob.php') !== false) {
window.location = url($(this).attr('href'));
go(idToPath($(this).attr('href')));
return false;
}
});
});
function go(num) {
if (num != undefined) {
$.ajax({
url: "mob.php?p="+num+"&logo=0",
cache: false,
success: function(html){
$("#ajax").html(html);
}
});
}
}
$.history.init(function(u) {});
var page = 4;
var id = window.location.hash.substr(1);
if (id != '' && page != id) {
go(id);
}
3 ответа
Там нет такого события.
Но вы можете использовать некоторый плагин истории, чтобы увидеть, как это делается там: http://www.mikage.to/jquery/jquery_history.html
Ну, я не уверен в каком-либо фиксированном решении этой проблемы.
Но я придумал временное решение для этого.
- В начале каждой страницы, проходящей через Ajax, я сохраняю информацию о странице и дополнительные параметры. лайк
$_SESSION['page'][] = "book.php?cat=1"
- Прикрепите функцию к событию истории браузера и вызовите пользовательскую функцию, чтобы получить требуемый URL и перенаправить на него.
Это не очень хороший ответ, но это должно дать вам приблизительное представление.:)
Добавление ajax в смесь состояния браузера вызывает много сложных проблем, как описано здесь: Как отображать запросы Ajax в URL?
Проект jQuery Ajaxy - отличное начало использования состояний ajax и браузера.