Вопрос

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

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

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

Спасибо Вам за уделенное время.

Это было полезно?

Решение

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

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

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

// Go straight to content if it's 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);
      });

   }

}

Другие советы

Ответ отрицательный, вы не можете получить значение хэша URL на стороне сервера.Видишь Как получить хэш URL (#) со стороны сервера.

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

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

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

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

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

Ну, вы можете использовать один из этих инструментов или использовать свой собственный.Использует окно.Расположение.окрошка вместе с другими трюками.

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

Вы можете найти больше об этом здесь по адресу http://andresgallo.com/2012/06/08/ajaxifying-the-web-the-easy-way/

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top