Сайт 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-адрес для добавления в закладки.