Сайт AJAXify
-
23-08-2019 - |
Вопрос
У меня есть законные причины сделать то, что я пытаюсь объяснить.У меня есть существующий сайт, скажем 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, чтобы пользователи могли добавлять ее в закладки.