Nano Hash - криптовалюты, майнинг, программирование

Изменить строку $_GET в форме с множественным выбором

У меня есть форма с несколькими вариантами выбора, и URL-адрес, который я получаю при отправке формы, выглядит примерно так:

tld.com/?var1=opt1$var1=opt2&var1=opt3&var2=opt1&var2=opt2

URL-адрес, который я хотел бы получить:

tld.com/?var1=opt+opt2+opt3&var2=opt1+opt2

Я не хочу использовать метод $_POST с параметрами, хранящимися в массиве, потому что я хочу, чтобы URL-адрес был уникальным для любого пользовательского поиска.

Форма выглядит примерно так:

<form action="" method="get"> 
    <select name="var1" multiple="multiple">
        <option value="var1">one</option>
        <option value="var2">two</option>
        <option value="var3">three</option>
        <option value="var4">four</option>
        <option value="var5">five</option>
    </select>
    <select name="var2" multiple="multiple">
        <option value="var1">one</option>
        <option value="var2">two</option>
        <option value="var3">three</option>
        <option value="var4">four</option>
        <option value="var5">five</option>
    </select>
    <input type="submit" value="Send" />
</form>
03.02.2012

  • Почему foo=1+2+3 вместо стандартного foo=1&foo=2&foo=3? 03.02.2012
  • У меня нет доступа к сценарию, который обрабатывает переменные URL-адреса... У меня есть доступ только к форме, которая должна генерировать URL-адрес. И структура должна быть ?foo=1+2+3 для нескольких значений 03.02.2012
  • @Quentin, так как это помечено как PHP, синтаксис foo[]=1&foo[]=2&foo[]=3, вы можете дополнительно указать ключи: foo[bar]=1&foo[baz]=2. PHP прозрачно переводит это в структуру массива. Поля ввода будут выглядеть так: <input name="foo[]" value="1">. 03.02.2012
  • Я серьезно рекомендую получить доступ к этому сценарию или попросить кого-нибудь, у кого есть к нему доступ, исправить его. Анализ структур данных стандартной формы будет проще и надежнее, чем попытка заставить формы отправлять данные нестандартными способами. 03.02.2012

Ответы:


1

Вы можете попробовать построить 2 массива на стороне клиента и опубликовать их через форму, но на стороне сервера вы все равно получите 2 массива и сделаете из них пары. Вам это действительно нужно?

Это будет что-то вроде

$("#myForm").submit(function(){
var myKeys = new Array();
var myValues = new Array();
$("#myForm input").each(function(n,element){
    myKeys[] = $(element).attr("name");
    myValues[] = $(element).val();
});
$("#hiddenInput").attr("name", myKeys.join('+'));
$("#hiddenInput").attr("value", myValues.join('+'));
return true;
});

Вы получите URL ?name1+name2+name3=value1+value2+value3

UPD: просто используйте [] в атрибуте имени:

<input name="var1[]" value="param1">
<input name="var1[]" value="param2">

Вы получите /?var1=param1+param2

03.02.2012
  • Может быть, я недостаточно ясно выразился, или значения переменных сбили вас с толку. Мне нужен возвращенный URL-адрес, чтобы объединить значения одной переменной. Итак, если при одном выборе у меня есть значения один и два, URL-адрес теперь ?foo=one&foo=two Мне нужно, чтобы он был ?foo=one+two 03.02.2012
  • Таким образом, только значения переменных должны быть объединены вместе, имена должны оставаться отдельными. 03.02.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..