Как заставить браузер не преобразовывать запятую в символы 2C с помощью JS?

1

Я меняю текущий путь пользователя через функцию:

function setSomeValue(someValues) {
      var query = '';
      for (var i = 0; i < someValues.length; i++) {
        query += someValues[i] + ',';
      }
      if ('URLSearchParams' in window) {
        var searchParams = new URLSearchParams(window.location.search);
        searchParams.set("paramName", query);

        var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString();
        history.pushState(null, '', newRelativePathQuery);
      }
    }

Как вы можете видеть, я добавляю новые слова пользователя и хочу, чтобы новое местоположение было таким:

www.site.com?paramName=value1,value2,

Но браузер конвертирует мои запятые в %2C поэтому я получаю следующее:

www.site.com?paramName=value1%2Cvalue2%2C

Что нужно сделать, чтобы сделать проталкивающую запятую для URL возможной?


  • 0
    @IgnacioVazquez-Abrams IgnacioVazquez-Абрамс такой хороший ответ ... xaxaxaxaaxaxaxa
  • 1
    @IgnacioVazquez-Abrams IgnacioVazquez-Abrams, если вы не знаете, как это сделать - не отвечайте мне
Показать ещё 17 комментариев
Теги:

1 ответ

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

(скопируйте и вставьте несколько комментариев)

Это может быть связано с URLSearchParams и его реализацией метода toString но мы не знаем, потому что вы не показали нам, что это на самом деле. Если это не преднамеренно кодирует запятую, и браузер просто делает это автоматически - тогда вы мало что можете сделать по этому поводу.

Если newRelativePathQuery содержит кодированные версии, возможно, они могут быть заменены на обычные запятые. Но если history.pushState делает это, то "другие способы" для создания самого URL-адреса вам не помогут.

Поскольку вывод отладки показал, что newRelativePathQuery содержит уже закодированные запятые, вы можете попытаться заменить их на запятые и посмотреть, будет ли это "выживать" в то время.

Ещё вопросы

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