Задать вопрос
bogdan_uman
@bogdan_uman
шлЫмазл неукЪ-поцЪ

Как правильно сделать render (перенаправление) на другую страницу в JS?

Здравствуйте. Как правильно сделать render (перенаправление) на другую страницу в JS? Сейчас использую такой способ
window.location.assign(  $parentElem.data( 'path-products' ) +'?id=' + data )


Может есть более изящный способ, особенно в плане передачи параметров так что бы не конкатенировать строку, а например передавать обьект {id: id}? Спасибо.

Всем спасибо за ответы, вот может кому-то пригодится переписал под Coffeescript
assignLocation = (siteUrl, urlParams) ->

  serializeParams = (params) ->
    Object.keys(urlParams).reduce((acc, cur) ->
      acc += "&#{ cur }=#{ encodeURIComponent( urlParams[cur] ) }"
    , '').replace(/^&/, '')
    
  console.log "#{siteUrl}?#{serializeParams(urlParams)}"
#   //window.location.assign(`${siteUrl}?${serializeParams(urlParams)}`);

assignLocation('https://www.site.com/test',
   id: 324
   name: 'Jack'
   age: 25 ) # 'https://www.site.com/test?id=324&name=Jack&age=25'
  • Вопрос задан
  • 162 просмотра
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
potapchino
@potapchino
function assignLocation(siteUrl, urlParams) {
	
	function serializeParams(params) {
		return Object.keys(urlParams).reduce((acc, cur) => {
			return acc += `&${ cur }=${ encodeURIComponent(urlParams[cur]) }`;
		}, '').replace(/^&/, '');
	}
	
	window.location.assign(`${siteUrl}?${serializeParams(urlParams)}`);
}

assignLocation('https://www.site.com/test', {
	id: 324,
	name: 'Jack',
	age: 25,
}); // 'https://www.site.com/test?id=324&name=Jack&age=25'
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
abyrkov
@abyrkov
JavaScripter
Э... и так все правильно, а поддержки параметров url'а в объекте в DOM API нет.
Не зная задачи, это - самый удачный вариант. Хочется "красоты" - вынесите в функцию или используйте стороннюю библиотеку.
Ответ написан
Комментировать
bogdan_uman
@bogdan_uman Автор вопроса
шлЫмазл неукЪ-поцЪ
Спасибо за ответы, вот на коленке накропал такое решение, может что то подправите? спасибо
function assignLocation(siteUrl, urlParams) {
  let serializeParams = ''
  for (let item of Object.entries(urlParams)) {
    serializeParams += `&${ item[0] }=${ item[1] }`
  }
  let url = `${siteUrl}?${serializeParams.slice(1)}`;
  //window.location.assign(url);
  console.log(url);
}

assignLocation('https://www.site.com/test', { id: 324, name: 'Jack', age: 25 } ); // https://www.site.com/test?id=324&name=Jack&age=25
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 11:03
5000 руб./за проект
18 дек. 2024, в 10:44
130000 руб./за проект
18 дек. 2024, в 10:02
7000 руб./за проект