2010-01-05 2 views
3

У меня есть страница на моем сайте, которая запрашивает довольно много контента через AJAX. Проблема, с которой я столкнулся, заключается в том, что, если вы заглядываете на сайт и находитесь на странице, где технически отсутствует URL-адрес, вы не можете скопировать/вставить URL-адрес и отправить его кому-либо, так как вы 'просто закончится на главной странице.Ссылки на URL-адреса AJAX

Я смотрел на Facebook, и они используют якорь для URL, который был запрошенной мимо оригинального URL, как это: http://www.facebook.com/#/somepage (если вы были на главной странице и пошел somepage, и это-запрос AJAX).

Установка якоря на URL не будет проблемы на всех, так как я использую <a> тегов для всех моих AJAX вещей в любом случае, но как бы я смог получить mysite.come/#/some-ajax-page/ работать должным образом и показать то, что some-ajax-page должно быть и не просто попытаться найти якорь с именем /some-ajax-page/ в DOM?

P.S. Я использую jQuery для моей JS и Django на стороне сервера

ответ

4

Вы можете обратиться к URL-адресу текущей страницы, используя объект document.location. Это не стандарт, но, тем не менее, каждый браузер, который я знаю, поддерживает его. Свойство hash этого объекта дает вам часть за символом хэша.

Таким образом, в вашем Jquery .ready функции, вы можете исследовать document.location.hash (для примера URL http://www.facebook.com/#/somepage который будет оценивать в /somepage), и интерпретировать его делать то, что необходимо, чтобы воссоздать соответствующее состояние вас страницы. Разумеется, вам нужна логика, конечно же, вы не можете ощущать запах, который может указывать на ваши страницы, и как вы хотите представить их в якорный текст.

Дополнительную информацию см. В документе mozilla объекта местоположения. AFAIK все браузеры поддерживают эти свойства: https://developer.mozilla.org/en/DOM/window.location

+0

Отлично! Это именно то, что я искал ... каким-то образом просто «читал», что якорь в JavaScript. Благодаря тонну! – Zack

-1

Просто получите фрагмент с запрошенным URL (для этого вам может понадобиться request.get_full_path()), а затем правильно постройте свою страницу на сервере.

+1

Я не верю, что фрагмент URL-адреса можно получить на стороне сервера (без намеренной отправки его по вызову AJAX) - это полностью клиентская сторона. – ceejayoz

1

Отъезд jQuery BBQ. Недавно мы использовали что-то подобное в проекте, и оно было довольно гладким.

Основная идея - прослушивать изменения в хэш-функции и выполнять функции (например, получить новую страницу через ajax) на основе хэша.

+0

Это может быть просто то, что я в конечном итоге использую ... очень хороший плагин, я читаю об этом прямо сейчас. Благодаря! :) – Zack

+0

Нет проблем. Я надеюсь, что это помогает. – davethegr8

Смежные вопросы