Bookmarkabale AJAX вызовы с маршрутизацией MVC - PullRequest
0 голосов
/ 19 апреля 2010

У меня есть страница с меню, которое использует вызовы JQuery AJAX для заполнения страницы. Чтобы отразить любые изменения, я обновляю URL с помощью # ... вместо? ... или / ... Таким образом, URL, который первоначально читается: htpp: // localhost / pages / index / id = 1, будет выглядеть так: http://localhost/#pages/index/id=1. Если пользователь добавляет это в закладки, а потом возвращается на страницу, мне интересно, возможно ли использовать второй URL-адрес при декодировании моего маршрута или если мне нужно загрузить его пустым, тогда используйте тот же JS / Ajax заполнить страницу?

На мой взгляд, использование Ajax в этих случаях проблематично, если пользователь копирует ссылку и отправляет ее по почте другу с отключенным JavaScript.

edit # 1: исправлено несколько орфографических ошибок.

edit # 2: Чтобы немного прояснить вопрос: я хочу сайт, на котором я могу сделать следующее: (a): с включенным javascript используйте вызовы ajax для замены содержимого div (без перезагрузки страницы) (b): с включенным javascript, добавьте страницу в закладки, как она есть после вызова ajax i (a) (c): возьмите URL-адрес, отправьте его человеку с включенным noscript и получите ту же страницу, что и после вызова ajax.

(a) и (b) прекрасно работают на моей странице, но (c), по-видимому, невозможно.

Ответы [ 3 ]

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

В настоящее время единственная часть URL, которую вы можете обновить, не вызывая перенаправления браузера, - это хеш.Эта часть URL-адреса не отправляется серверу в запросе и доступна только для обработки на стороне клиента, поэтому ее нельзя использовать для предоставления ссылки без использования JavaScript.

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

Это означает, что у вас есть один URLкоторый предоставляет «снимок» состояния страницы:

http://localhost/pages/index/1/someaction

и специфичный для AJAX URL, который предоставляет локальное состояние страницы в браузере клиента:

http://localhost/pages/index/1#someaction

Что вам нужно сделать, это предоставить некоторые средства для создания ссылки «снимок» на страницу из версии AJAX.Кнопка «Ссылка на эту страницу» или «Постоянная ссылка» является разумным вариантом.

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

Это невозможно просто потому, что все, что идет после знака # (идентификатор фрагмента), никогда не отправляется на сервер, и у сервера нет возможности получить это значение, поэтому маршрутизация с ним отсутствует.

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

Вы можете попробовать заменить '#' на '?' Остальная часть будет отправлена ​​как переменная get, поэтому вам может потребоваться выполнить некоторые твики, например, изменить формат на http://localhost/?pages=index&id=1

Есть несколько необычных вещей, которые вы можете настроить с помощью веб-сервера, чтобы localhost/article/fancystuff перенаправлялся на localhost/article.php?title=fancystuff

Существует множество способов, позволяющих сайту AJAX работать с закладками и кнопкой возврата. Но вы должны спросить себя, хотите ли вы, чтобы люди делали определенные вещи. Как правило, AJAX используется для более продвинутых веб-приложений, которые плохо сопоставляются с традиционной моделью туда и обратно.

EDIT

Какие у вас дополнения к вопросу. Я скажу, что если вы хотите полностью поддерживать пользователей, которые боятся Javascript, вам нужно, чтобы ваш сайт работал без каких-либо AJAX. Но вы должны разработать его таким образом, чтобы содержимое страниц включалось из отдельных файлов. Это означает, что когда вы добавляете дополнительный Javascript, он может загрузить файл и поместить его более или менее непосредственно в держатель содержимого на вашей странице.

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

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