Как изменить URL-адрес после завершения публикации AJAX без перезагрузки страницы - PullRequest
0 голосов
/ 13 декабря 2011

Я создаю блог-приложение в Django, и любой пользователь, зарегистрированный на моем сайте, может написать блог. Когда я строил модель, я решил представлять каждый блог комбинацией user.id и title как поле slug. Поэтому блог под названием «Мой блог» пользователя с идентификатором 8909 будет иметь вид

.
/blogs/8909/My-Blog/

Проблема возникает, когда я пытаюсь предоставить пользователю кнопку preview. Функция предварительного просмотра заключается в обновлении блога в базе данных и открытии блога в новой вкладке. Однако, поскольку я представляю блог по его названию, если пользователь изменяет заголовок, мне нужно также изменить текущий URL-адрес, в противном случае URL-адрес становится несуществующим на серверной части.

Я не нашел способа, которым я могу редактировать URL, я только встречал статьи, в которых говорится, что я могу редактировать поле хеша, но не более того.

Что может быть решением моей проблемы.

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

Дайте каждому блогу инвариантный идентификатор и используйте его в своей маршрутизации, например:

/blogs/{userId}/{blogId}

Таким образом, ваши идентификаторы ресурсов не привязаны ни к чему, что может изменить пользователь.

Если, однако, вышеописанное невозможно, вы можете сохранить список недавно измененных заголовков и выдать ответ о перенаправлении, если запрошены какие-либо устаревшие ресурсы.

0 голосов
/ 25 июля 2014

Если вы делаете это асинхронно и не хотите отправлять страницу обратно, вы можете попробовать window.history.pushState, он может изменить URL без обратной отправки, но помните, что на сервере вы также должны изменить базу данных, где вы находитесьподдержание фактического URL.Вы можете найти здесь "Как изменить URL с постбэка страницы": здесь есть некоторые детали, надеюсь, что это работает для вас

http://arbtech.co.in/search_blog.aspx?q=How-to-change-URL-withought-page-postback-:

...