Я пытался заставить это работать некоторое время.
Я создаю веб-приложение, в котором я хотел бы, чтобы веб-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 =, а затем только первый символ строки.