Это то, что ускользает от большинства новых разработчиков AJAXian. Это довольно простая проблема.
Первое, что вам понадобится, это ядро jQuery, которое можно бесплатно скачать на jquery.com
далее вам понадобится плагин jQuery change hasn от Ben Alman, который вы можете найти здесь: http://benalman.com/projects/jquery-hashchange-plugin/ Это не понадобится для более новых версий браузеров, которые поддерживают событие hashchange html5, но вам будет нужно для более старых версии браузеров. Вам не нужно ничего делать, но включить этот скрипт на своей странице, он обрабатывает все остальное.
теперь для ваших ссылок вам нужно будет создать их в виде строки запроса, например:
<a href="user.php?q=/topic/article" class="dynlnk">Link Text/Image</a>
теперь у вас есть ссылки, которые ведут на страницы и могут быть обработаны в php, если javascript отключен. все, что вам нужно сделать, это использовать суперглобальный $ _GET и проанализировать строку запроса для обработки содержимого страницы.
теперь в вашем javascript на странице вам нужно, чтобы ваши ссылки вызывали hashchange. Вы можете сделать это, заменив? Q = на #, как это.
$(".dynlnk").each(function(){
$(this).attr("href", $(this).attr("href").replace("?q=", "#"));
});
теперь ваши ссылки будут вызывать хэш-обмен, единственное, что остается сделать, это связать хэш-обмен с функцией, которая что-то делает. Это можно сделать очень просто с помощью jQuery следующим образом:
$(window).bind( 'hashchange', function(e){
//this splits the part after the hash so you can handle the parts individually.
//to handle them as one just use location.hash
pageparts = location.hash.split("/");
});
Теперь просто добавьте любой код, который вы делаете для обработки вашего ajax и контента.
теперь вам просто нужен последний бит javascript для запуска хеширования в случае, если страница была загружена хешем для начала, поэтому вы просто вызываете функцию триггера Windows при загрузке страницы
$(window).trigger( 'hashchange' );
Надеюсь, это достаточно ясно, если нет, не стесняйтесь обращаться ко мне, чтобы задать больше вопросов.