Сайт AJAXify
У меня есть законные причины делать то, что я пытаюсь объяснить. У меня есть существующий сайт abc.com который имеет регулярные страницы и т. д. все написано на php. Теперь я хотел бы AJAXify сайт т. е. когда пользователь нажимает на ссылку, он должен получить ссылку с помощью AJAX и заменить содержимое страницы. Это простая часть, и я могу достичь ее с помощью функции jQuery get.
теперь проблема возникает, когда пользователь закладывает страницу. Я могу использовать хэш-теги, чтобы указать, включен ли пользователь другая страница, но вместо того, чтобы использовать javascript для получения новой страницы снова, можно ли получить ее непосредственно с помощью PHP при вызове страницы.
не могли бы вы дать мне план о том, как достичь вышеуказанного. Эта функциональность похожа на то, что имеет Facebook.
Спасибо за ваше время.
6 ответов
Это довольно простой процесс (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?
также вы можете использовать один из этих инструментов или свернуть свой собственный. Использует окно.местоположение.хэш вместе с другими трюками.
недавно я написал статью об этом конкретном вопросе. Статья является учебным стилем. Используя событие изменения хэша, im показывает, как добавлять параметры в url-адрес, который может запускать ajax-запросы с бесконечным количеством параметров, поэтому функционирует довольно масштабируемым образом.
вы можете найти больше об этом здесь http://andresgallo.com/2012/06/08/ajaxifying-the-web-the-easy-way/
Часть I охватывает, как реагировать на хэш-ссылки, в то время как часть II описывает, как отправлять данные в хэш-url-адресе в запрос ajax, поэтому позволяет вам делать почти все, что вы хотите, из хэш-тегов в вашем url-адресе.
лучший способ сделать это-иметь один индекс.php, который загружает все остальные страницы на основе частей URL после него. Например:
http://www.example.com/index.php/reports/employees/hoursWorked
в этом случае индекс.php будет работать, он может видеть, что запрашивается, это отчет о часах работы и загружать этот контент. Проблема в том, если индекс.php затем загружает весь другой контент после этого с помощью AJAX, URL в браузере никогда не будет изменение.
один из способов обойти эту проблему - поместить ссылку" Ссылка на эту страницу " на каждую страницу, содержащую эту форму URL-адреса для пользователей.