Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.09.2019, 13:49
Интересующийся
Отправить личное сообщение для karnager Посмотреть профиль Найти все сообщения от karnager
 
Регистрация: 14.06.2019
Сообщений: 16

Передача GET-параметра в URL
Здравствуйте! Хочу реализовать следующее: когда я перезагружаю страницу вроде mysite.com, то нужно добавить параметр после URL, чтобы получить mysite.com/?value=key (в конец строки)

Уже дошел до проверки и такого кода:

var key = '123';
var parameter = '?value=' + key;
if ((window.location.href.indexOf(parameter) === -1) || (window.location.href.indexOf('?') === -1)) {
  window.location.href += parameter;
}


Однако как быть, если в параметре уже есть GET-запросы, разделенные вопросительным знаком. И если ссылка уже имеет другие параметры, например: mysite.com/?param=1&filter=3, можно ли передать мой параметр в конец ссылки? mysite.com/?param=1&filter=3&value=123, чтобы он разделялся не значком вопросительного знака, поскольку 2 знака выдадут ошибку, а знаком &

Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 30.09.2019, 13:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от karnager
И если ссылка уже имеет другие параметры, например: mysite.com/?param=1&filter=3, можно ли передать мой параметр в конец ссылки? mysite.com/?
Конечно можно.

Цитата:
часть адреса после символа ?, включая символ ?
https://javascript.ru/window-location

Но на ГЕТ параметры есть ограничение по размеру
http://qaru.site/questions/18078/max...tp-get-request
Ответить с цитированием
  #3 (permalink)  
Старый 30.09.2019, 14:01
Интересующийся
Отправить личное сообщение для karnager Посмотреть профиль Найти все сообщения от karnager
 
Регистрация: 14.06.2019
Сообщений: 16

Мне нужно передавать параметр вида mysite.com/?value=123 если в ссылке нет других параметров и передавать со значком амперсанд если в ссылке уже есть другие параметры: mysite.com/?param=1&filter=3&value=123



Пробовал вот такое условие создать в цикле:

<script> 
var key = '123';
var param1 = '?value=' + key;
var param2 = '&value=' + key;
if (window.location.href.indexOf('?') === -1) {window.location.href += param1;}
  else if (window.location.href.indexOf('&') === -1) {window.location.href += param2;}
</script>


Но тогда он сначала проверяет первое условие и создает ссылку mysite.com/?value=123, а потом еще добавляет после второй раз mysite.com/?value=123&value=123

Последний раз редактировалось karnager, 30.09.2019 в 14:22.
Ответить с цитированием
  #4 (permalink)  
Старый 30.09.2019, 14:03
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от karnager
Но тогда он сначала он проверяет первое условие и создает ссылку mysite.com/?value=123, а потом еще добавляет после второй раз mysite.com/?value=123&value=123
Так ты не удачно строишь проверки УРЛ - в этом все дело.
Ответить с цитированием
  #5 (permalink)  
Старый 30.09.2019, 14:14
Интересующийся
Отправить личное сообщение для karnager Посмотреть профиль Найти все сообщения от karnager
 
Регистрация: 14.06.2019
Сообщений: 16

Да вот и пытаюсь понять. Вообще по ссылке, что прислали, за это отвечает search
Ответить с цитированием
  #6 (permalink)  
Старый 30.09.2019, 14:35
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от karnager
Вообще по ссылке, что прислали, за это отвечает search
Именно.

Сообщение от karnager
Да вот и пытаюсь понять.
Ветвление должно быть "жестким". Или налево... Или направо...

window.location.search==''

Параметров нет. Иначе они есть.
Правда если search не "пусто" могут быть и другие варианты... Но отрабатывать их нужно именно в "ветке" где параметры есть.
Ответить с цитированием
  #7 (permalink)  
Старый 30.09.2019, 18:29
Интересующийся
Отправить личное сообщение для karnager Посмотреть профиль Найти все сообщения от karnager
 
Регистрация: 14.06.2019
Сообщений: 16

<script>
var key = '123';
var param1 = '?value=' + key;
var param2 = '&value=' + key;
if (window.location.search=='') {window.location.href += param1;}
else {window.location.href += param2;}
</script>


Тут подставляется со знаком все ок, только они бесконечно http://prntscr.com/pcyd9e дальше добавляются автоматом и страница сама перезагружается. Как сделать только 1 раз?

Последний раз редактировалось karnager, 30.09.2019 в 19:30.
Ответить с цитированием
  #8 (permalink)  
Старый 30.09.2019, 23:18
Интересующийся
Отправить личное сообщение для karnager Посмотреть профиль Найти все сообщения от karnager
 
Регистрация: 14.06.2019
Сообщений: 16

Есть у кого-нибудь идеи? Задача-то не очень простая...
Ответить с цитированием
  #9 (permalink)  
Старый 01.10.2019, 07:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от karnager
Как сделать только 1 раз?
Проверять, что там уже есть твой параметр.
Ответить с цитированием
  #10 (permalink)  
Старый 03.10.2019, 15:54
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

(() => {
  const key = 'key';
  const value = 'value';
  
  const params = new URLSearchParams(window.location.search);

  if (params.get(key) !== value) {
    params.set(key, value);
    window.location.search = params.toString();
  }

})();
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача параметров в url средствами jquery ajax sys Общие вопросы Javascript 19 10.10.2016 19:03
Передача js скрипта через url paladdin Events/DOM/Window 1 12.05.2016 12:50
Передача параметра в proxy из combo adamenko.artem ExtJS 1 08.07.2014 17:34
Водяной знак на fancybox bobrina Общие вопросы Javascript 1 03.06.2011 21:11
Передача параметра из checkbox в asp страницу artwalek AJAX и COMET 3 11.08.2009 14:24