Gmail как схема URL - PullRequest
       6

Gmail как схема URL

11 голосов
/ 09 апреля 2010

Я работаю над системой тикетов, предъявляя следующие требования:
Домашняя страница разделена на два раздела:
Sec-1. Здесь показаны некоторые параметры фильтра (например, закрытые билеты, открытые билеты, все билеты, билеты, назначенные мне и т. Д.). Вы можете выбрать один или несколько из этих фильтров.
втор-2. Список билетов, удовлетворяющих вышеуказанным фильтрам, будет отображаться здесь.

Теперь вот что я хочу: как я меняю фильтры
-> изменение должно быть отражено в URL, чтобы можно было добавить его в закладки.
-> запрос ajax будет отправлен, и список заявок, удовлетворяющих выбранным фильтрам, будет обновлен в разделе 2.

Я хочу, чтобы один и тот же код использовался для загрузки билетов обоими способами-
(a) выбрав этот набор фильтров и
(б) с помощью закладки для перезагрузки страницы.

Я мало представляю, как это сделать:
URL будет содержать выбранные фильтры. (Добавлено после #)
изменение фильтров на странице изменит хеш-часть URL-адреса и вызовет функцию (скажем, ajaxHandler ()), чтобы проанализировать URL-адрес для получения фильтров, а затем сделать запрос ajax, чтобы получить список заявок, отображаемых в разделе 2.
и
Я вызову ту же функцию ajaxHandler () в window.onload.

Я чувствую, что это то, что Yahoo карты делает.

Как лучше всего реализовать такую ​​схему URL?
Я направился в правильном направлении?

Ответы [ 7 ]

7 голосов
/ 12 апреля 2010

Да - вы движетесь в правильном направлении, и есть тонна работы, которая была проделана для правильного выполнения этого во всех браузерах и операционных системах. Одна из сложнейших деталей - правильно настроить кнопки браузера «назад» и «вперед» при использовании синтаксиса #urlfragment.

Библиотека, которая поддерживает такие вещи: http://developer.yahoo.com/yui/history/

2 голосов
/ 16 апреля 2010

Хорошо, если вы используете jQuery, есть прекрасная библиотека от Asual: Адрес jQuery для глубоких ссылок. У них хорошая справка по API и примеры. Это даст вам все инструменты, необходимые для реализации вашего приложения.

2 голосов
/ 12 апреля 2010

Я считаю решение приложения Google Wave довольно элегантным. Это в основном то, что вы описываете, используя разбираемый фрагмент URL. вот так: http://some.domain/some/url/#filters(filter1:key1,filter2:key2);someOtherfragment;andAnotherFragment

1 голос
/ 18 апреля 2010

Бен Алман создал полнофункциональный плагин jQuery для этого BBQ . ИМО, это намного лучше, чем плагин Address.

1 голос
/ 12 апреля 2010

Это довольно простой ответ, но вы хотите использовать скрытый метод iframe для вашего AJAX, а не XHR (объект XMLHttpRequest). Это позволит браузеру вести историю, поэтому ваши кнопки возврата будут продолжать работать.

Еще немного: http://ajaxpatterns.org/IFrame_Call

0 голосов
/ 18 апреля 2010

В Chrome, Safari и Firefox вы можете использовать методы HTML5 history.pushState и history.replaceState()

Некоторая документация здесь и здесь .

0 голосов
/ 12 апреля 2010

Использование библиотеки yui для истории - опция, упомянутая в комментарии sblom. Возможно, вы захотите просто предоставить закладку или кнопку ссылки на своей странице, на которую пользователь может щелкнуть, чтобы перейти к URL, если вы не хотите решать проблемы совместимости с различными браузерами.

Мы делаем это здесь http://connect.garmin.com/explore#sortField=relevance&currentPage=1 Есть ссылка в верхней части карты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...