Сайт AJAXify

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

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

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

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


person Alec Smart    schedule 06.07.2009    source источник
comment
Не знаю, почему это было отклонено, это вполне законный вопрос.   -  person Sasha Chedygov    schedule 07.07.2009
comment
бит ajax действительно не имеет значения, вы хотите знать, может ли php читать теги привязки и перенаправлять. то есть, можете ли вы протестировать mainpage.php # about_us (ссылка с закладкой) и перенаправить на aboutus.php (прямая ссылка на контент, который пользователь просматривал при размещении в закладках). Я не знаю ответа, но предлагаю уточнить вопрос.   -  person Tim Hoolihan    schedule 07.07.2009
comment
@musicfreak: согласен, я проголосовал за него, чтобы вернуть его в положительные числа   -  person Tim Hoolihan    schedule 07.07.2009


Ответы (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);
      });

   }

}
person Triptych    schedule 06.07.2009
comment
в вашем примере, когда я использую кнопки «назад» и «вперед», он не запоминает предыдущее состояние. - person Alec Smart; 07.07.2009

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

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

person Jason DeFontes    schedule 06.07.2009
comment
В этом суть вопроса: это значение необходимо получить onDocumentReady, а затем использовать для активации соответствующей функциональности ajax. - person Simon Scarfe; 07.07.2009

Я предпочитаю jQuery History. Его можно найти здесь: 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?

person balupton    schedule 28.08.2010

Что ж, вы можете использовать один из этих инструментов или создать свой собственный. Использует window.location.hash вместе с другими уловками.

person epascarello    schedule 06.07.2009

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

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

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

person Andres Gallo    schedule 11.08.2012

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

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

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

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

person dj_segfault    schedule 06.07.2009