.htaccess с параметрами массива (флажок) и три других. ПОЛУЧИТЬ метод - PullRequest
0 голосов
/ 10 ноября 2018

Я пытался заставить это работать некоторое время.

Я создаю веб-приложение, в котором я хотел бы, чтобы веб-URL был example.net/param/param/param/param и т. Д.

Я успешно сделал это на одной из моих страниц здесь:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)$ /i/index.php?id=$1 [NC,L]

Это займет example.com/i?id=1212112 и превратит его в example.com/i/1212112.

Однако у меня есть другой каталог, результаты, который получает POST от domain.com (index). У меня есть форма внутри результатов, которая получает информацию через вызов AJAX и создает форму. Этот код ниже.

<script>
    $(document).on('change', 'select', function() {
      var itemSpecifics = document.getElementById('itemSpecifics');
      var submitButton = document.getElementById('submitButton');
      var narrowHelper = document.getElementById('narrowHelper');
      narrowHelper.innerHTML = "select all of the filters you want to search by.";
      var loading = document.getElementById('loading');
      loading = loading.style.display = "block";
      document.getElementById("submitButton").style.display = "none";
      //$("#submitButton").empty();
      $("#itemSpecifics").empty();
      $.ajax({
          type : 'GET',
          url : 'refine_search.php',
          data: {category: $(this).val()},
          cache: false,
          dataType : 'json',
          encode : true,
          traditional: true,
          success: function (response, status, xhr) {
            console.log(response);

            for (var i = 0; i < response.length; i++) {
              console.log(response[i].name);
              itemSpecifics.innerHTML += "<div style=\"color:#ec5b6e\">" + response[i].name + "</div>";
              //console.log(response[i].value);
              for (var j = 0; j < response[i].value.length; j++) {
                console.log("-- " + response[i].value[j].value);
                var checkbox = document.createElement('input');
                checkbox.type = "checkbox";
                checkbox.name = "cb[]";
                checkbox.value = response[i].name + "@" + response[i].value[j].value;
                checkbox.id = "checkboxid";
                var label = document.createElement('label')
                label.htmlFor = "id";
                label.id = "label";
                label.appendChild(document.createTextNode(response[i].value[j].value));
                itemSpecifics.appendChild(checkbox);
                itemSpecifics.innerHTML += " ";
                itemSpecifics.appendChild(label);
                itemSpecifics.innerHTML += "<br>";
                $("input[type='checkbox']").on('change', function(){
                    console.log($(this).val());
                });
              }
            }


            submitButton.innerHTML = "SUBMIT";
            document.getElementById("loading").style.display = "none";
            document.getElementById("submitButton").style.display = "block";
          },
          error: function (xhr, status, error) {
            console.log(error);
          }
        });
        // if you want to do stuff based on the OPTION element:
        var opt = $(this).find('option:selected')[0];
        // use switch or if/else etc.
    });
    </script>

Это выплевывает много флажков и меток. Когда они выбраны, я беру значение и сохраняю его в массиве cb [] для имени флажка. Для формы есть это.

<form action="example.net/results" method="GET">

Когда эта форма отправлена, я получаю это ...

https://www.example.com/results/?cb%5B%5D=Model%40Xbox+360+Arcade&cb%5B%5D=Model%40Xbox+360+Core&cb%5B%5D=Model%40Xbox+360+E&cb%5B%5D=Model%40Xbox+360+Elite

То, что я ЛЮБЛЮ, чтобы иметь возможность сделать, это направить вышеупомянутый URL к ...

https://www.example.com/results/Model%40Xbox+360+Arcade/Model%40Xbox+360+Core/Model%40Xbox+360+E/Model%40Xbox+360+Elite

ИЛИ, удалив &cb%5B%5D=

Может кто-нибудь помочь мне с этим? Я попытался сделать метод POST для формы, но когда я это сделал, код захватывает только последний cb =, а затем только первый символ строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...