Параметр поискового запроса Javascript

#javascript #arrays

#javascript #массивы

Вопрос:

Я хочу добавить и задать параметры для строки запроса с тем же ключом и другим значением.

 url.com/product.php?order=price.lowamp;order=quantity.low
  

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

   function lowQRadio() {
    document.getElementById("radio-qlow").checked=true;
    params.set("order","quantity.low");
    window.location.href=(location.pathname   '?'   params);

}
    function highQRadio() {
    document.getElementById("radio-qhigh").checked=true;
    params.set("order","quantity.high");
    window.location.href=(location.pathname   '?'   params);


}
    function  lowPRadio(){
    document.getElementById("radio-plow").checked=true;
    params.set("order","price.low");
    window.location.href=(location.pathname   '?'   params);
}
    function  highPRadio(){
    document.getElementById("radio-phigh").checked=true;
    params.set("order","price.high");
    window.location.href=(location.pathname   '?'   params);
}
  

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

   let url = new URL(window.location.href);
    let params = new URLSearchParams(url.search);
    if(params.has("order")){
    var aflag=params.getAll("order");
    console.log(aflag.length);
    if(aflag[aflag.length-1]==="quantity.low" || aflag[aflag.length-2]==="quantity.low") {
    document.getElementById("radio-qlow").checked = true;
}
    else if(aflag[aflag.length-1]==="quantity.high" || aflag[aflag.length-2]==="quantity.high"){
    document.getElementById("radio-qhigh").checked=true;
}
    else if(aflag[aflag.length-1]==="price.low" || aflag[aflag.length-2]==="price.low"){
    document.getElementById("radio-plow").checked=true;
}
    else if(aflag[aflag.length-1]==="price.high" || aflag[aflag.length-2]==="price.high"){
    document.getElementById("radio-phigh").checked=true;
}
  

поэтому я хочу, чтобы, когда пользователь выбирал сортировку по цене и количеству, оба этих переключателя были проверены, а запрос изменен, и если пользователь выберет один из методов сортировки, был установлен только один параметр, а если выбрать другой, оба из них будут проверены, и страница будет обновлена

php-код или серверная часть работали, но js-код работает только для одного типа переключателей, и оба вида не работают!!

пожалуйста, помогите мне исправить это, спасибо с уважением

Ответ №1:

Строка запроса представляет собой набор пар имя-значение. Имена должны быть уникальными. Вы хотите сделать что-то вроде url.html ?OrderBy=col1,col2,col3

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

Комментарии:

1. url.com?product.php?заказ=цена. низкий и порядок = количество. высокая, серверная часть работает

2. Не пишите что-то, что противоречит тому, как должна работать строка запроса.