Javascript - получить location.pathname + location.search - не все части

0

Я пишу функцию js, которая принимает фактическое location.pathname + location.seach, чтобы пользователь мог вернуться к странице результатов поиска, если он нажал кнопку " back.

пример url: http://127.0.0.1:8000/search_for_book/?titel=&autor=doniyor#

function select_book(bookid){
  var backurl = String(window.location.pathname+window.location.search);
  //alert(backurl); //<---- this is giving the correct full path
  window.location = 'selected/?book_id=' + bookid + '&back=' + backurl;
}

но в последней строке функция ?titel= только до ?titel= и отсекает остальные. новый url становится следующим:

http://127.0.0.1:8000/search_for_book/selected/?book_id=10&back=/search_for_book/?titel=

почему это? Мне нужно полное location.pathname с полным адресом location.search.

есть идеи?

Теги:

1 ответ

1
Лучший ответ

но в последней строке функция добавляется только до? titel = и отсекает остальные.

Нет, это не так. Предупреждение/ведение журнала строкового значения, которое вы присваиваете window.location, должно было показать вам это. (И btw., window.location.href - это правильный способ обновления местоположения. location сам по себе является объектом, а не свойством - только допуски ошибок браузеров позволяют вам сделать это таким образом. Поэтому используйте window.location.href= … вместо.)

Это происходит неправильно, потому что & в URL-адресе разделяет параметры друг от друга. Таким образом, значение вашего параметра back заканчивается после того, как &, а затем приходит новый параметр autor - потому что вы пренебрегли URL-закодировать значение параметра правильно.

Используйте encodeURIComponent для значения, прежде чем добавлять его в строку.

  • 0
    о, спасибо, не знал этого. Дай мне попробовать

Ещё вопросы

Сообщество Overcoder
Наверх
Меню