Сайт AJAXify

У меня есть законные основания делать то, что я пытаюсь объяснить. У меня есть существующий сайт, который говорит abc.com, который имеет обычные страницы и т.д. Все написанное на php. Теперь я хотел бы AJAXify сайта, то есть когда пользователь нажимает на ссылку, он должен извлечь ссылку с помощью AJAX и заменить содержимое страницы. Это легкая часть, и я могу ее достичь, используя функцию jQuery get.

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

Не могли бы вы дать мне краткое описание того, как достичь вышеуказанного. Эта функциональность похожа на то, что имеет Facebook.

Спасибо за ваше время.

Ответ 1

Это довольно простой процесс (1) Разбор хэш-тега и (2) Загрузка содержимого через Ajax, как обычно.

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

Здесь быстрый пример для игры. Нажмите на имя и отметьте хэш-тег. Соответствующий Javascript выглядит следующим образом:

// Go straight to content if it in the hash.
$(document).ready(function(){
   load_story_from_hash();
});

// Call this function whenever user clicks on a hash link
function set_hash(hash){
   window.location.hash = hash;
   load_story_from_hash()
}

// Actually load content based on the hash in the URL
function load_story_from_hash(){

   var hash = window.location.hash;
   hash = hash.replace(/^#/, '');

   if (hash) {

      $('#post_container').load(hash+'.html', {}, function(){
         $.scrollTo('#post_container', 1000);
      });

   }

}

Ответ 2

Ответ: нет, вы не можете получить значение URL-адреса хэш-сервера. См. Как получить Url Hash (#) со стороны сервера.

Вам нужно получить хэш-значение на стороне клиента и сделать дополнительный запрос.

Ответ 3

История jQuery - мой предпочтительный выбор. Его можно найти здесь: http://www.balupton.com/projects/jquery-history/ Предоставление поддержки кросс-браузера, привязка к хэшам, перегрузка хэшей, все остальное.

Существует также расширение Ajax для него, называемое jQuery Ajaxy, позволяющее легко обновлять вашу веб-страницу в правильном приложении Ajax без необходимости изменений на стороне сервера, а остальные SEO и JS-Disabled - дружественные: http://www.balupton.com/projects/jquery-ajaxy/

Это решение, выбранное такими сайтами, как http://wbhomes.com.au/ и http://www.balupton.com

В целом они хорошо документированы, поддерживаются и богаты. Они также получили щедрый вопрос здесь Как показать запросы Ajax в URL?

Ответ 5

Недавно я написал статью об этой точной проблеме. Статья - стиль учебника. Используя событие изменения хэша, im показывает, как добавлять параметры к URL-адресу, который может запускать запросы ajax с бесконечным количеством параметров, поэтому работает довольно масштабируемым образом.

Подробнее об этом можно узнать здесь http://andresgallo.com/2012/06/08/ajaxifying-the-web-the-easy-way/

В части я описывается, как реагировать на хеш-ссылки, в то время как в части II описывается, как отправлять данные в хэш-URL-адресе на запрос ajax, что позволяет вам делать практически все, что угодно, из хэш-тегов в вашем URL-адресе.

Ответ 6

Лучший способ сделать это - иметь один index.php, который загружает все остальные страницы на основе частей URL после него. Например:

http://www.example.com/index.php/reports/employees/hoursWorked

В этом случае index.php будет запущен, он может видеть, что запрашивается, это отчет о работе с часами и загрузка этого содержимого. Проблема в том, что если index.php затем загружает все остальные материалы после этого, используя AJAX, URL-адрес в браузере никогда не изменится.

Один из способов решения этой проблемы - связать ссылку "Ссылка на эту страницу" на каждой странице, содержащей эту URL-адрес для добавления в закладки.