Постоянная ссылка лучшие практики для страниц AJAX - PullRequest
6 голосов
/ 23 февраля 2010

Допустим, у меня есть страница "отчета", которую можно настроить с помощью Javascript. Скажем, у меня есть start_date, end_date и type («simple» или «full»), которые можно изменить. Теперь Я хочу, чтобы адресная строка всегда содержала «постоянную ссылку» текущего (настраиваемого) представления, чтобы пользователь мог легко скопировать ее .

Если бы я делал это без Ajax, я бы просто использовал что-то вроде "/ report /? Start_date = 2010-01-01 & end_date = 2010-01-31 & type = full" в качестве постоянной ссылки. Но так как я хочу обновить URL из Javascript, мне нужно использовать якоря (#), иначе всю страницу нужно будет перезагрузить.

Есть ли лучшая практика для создания постоянных ссылок в этом случае? Я хотел бы пойти с чем-то вроде "/ report / # start_date = 2010-01-01, end_date = 2010-01-31, type = full" и проанализировать эту вещь в Javascript. Есть ли лучший или более общепринятый способ справиться с этим?

Кроме того, есть ли лучший способ справиться со стороной Javascript, чем просто анализировать все?

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 февраля 2010

В итоге я использовал URL-адреса вида http://example.com/resource/#param1=value1&param2=value2. Я написал некоторый код Javascript для решения этой проблемы (анализ / обновление URL) Код на Github , если кому-то интересно.

0 голосов
/ 23 февраля 2010

Если у вас есть группа ссылок, которые указывают на ресурсы домена , лучший способ сделать это:

  • оставить URL-адреса как есть (со строкой запроса вроде some/site?start=4&end=10)
  • добавить класс к тем ссылкам, которые обеспечивают ловушку для вашего javascript

    <a href=".." class="ajax">Some resource</a>

  • планировать, какой тип данных ответа они будут выдавать (обычный текст, xml, JSON, html)
  • принять решение бэкэнда возвращать ли полную страницу или ответ на вызов ajax
  • таким образом страницы остаются доступными

Например, в PHP вы можете легко просмотреть переменную $ _SERVER и решить, возвращать ли полный ответ страницы или готовый к ответу ajax:

function isXmlHttpRequest()
{
    return isset( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) && 
        ($_SERVER[ 'HTTP_X_REQUESTED_WITH' ] == 'XMLHttpRequest');
}

Локальные ресурсы страницы

HTML вроде:

<a href="#first">First</a>
<a href="#second>Second</a>

<div id="first">lorem</div>
<div id="second">ipsum</div>

Вам не нужно ничего анализировать, все, что вам нужно сделать, это просто отобразить правильный div с идентификатором, который вы непосредственно получите из a[href] .. Это считается хорошей практикой, поскольку ваша страница остается доступной даже с выключенным JS.

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