Как массив преобразовать в get-образную строку?
Здравствуйте. У меня на сайте есть фильтр, который работает без перезагрузки страницы. Мне хочется, чтобы в случае перезагрузки - данные формы сохранились. Я так поняла, мне нужно просто параллельно у пользователя менять его url с параметрами фильтра. В итоге я имею примерно вот такой массив:
{
filtr: "_created",
status: {"Принят", "Отклонён", "Завершён"},
limit: 8
}
Подскажите, как его преобразовать, чтобы потом сделать вот такое? history.pushState(null, null, '/adm?'+array); и обработать его потом на php... |
Цитата:
Еще он с ошибками. Цитата:
const obj = {
filtr: "_created",
status: ["Принят", "Отклонён", "Завершён"],
limit: 8
}
const str = JSON.stringify(obj)
alert(str)
|
Как то так
let sp = new URLSearchParams('');
let par = {
filtr: "_created",
status: ["Принят", "Отклонён", "Завершён"],
limit: 8
};
sp.append('filtr', par.filtr);
for (const ps of par.status) {
sp.append('status', ps);
}
sp.append('limit', par.limit);
let url = '/adm?' + sp.toString();
console.log(url);
// history.pushState(null, null, url)
|
ksa,
Подскажите. У меня есть вот такой объект: ![]() В js я делаю вот так: history.pushState(null, null, '?'+JSON.stringify(res.post)) Адресная строка меняется на ser.loc/adm/?{"status":["В%20обработке","Принят"],"sort":"_created","countent":"0"} Потом я делаю в php print_r и получаю вот это:
Array
(
[{"status":] => Array
(
["В обработке","Принят"] =>
)
)
Что не так? Почему обрубается в php? Я не декожу $_GET, он его даже не дал раздекодить |
Цитата:
ser.loc/adm/?data=<тут_твоя_JSON_строка> На сервере, получив значение переменной data, обрабатываешь то значение как можешь... |
Цитата:
Теперь снова проблема: я хочу разобрать эту же строку. Я пытаюсь достать из него этот json, но на такой запрос: strGET = window.location.search.replace( '?filtr=', ''); я получаю кракозябры:
"{%22status%22:[%22%D0%92%20%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5%22,%22%D0%9F%D1%80%D0%B8%D0%BD%D1%8F%D1%82%22],%22sort%22:%22_created%22,%22countent%22:%220%22}"
Разумеется распарсить я это никак не могу. |
Цитата:
Если полученный УРЛ не перекодирован "автоматически" - его нужно перекодировать самой... Иначе русские буквы такими и будут Гугли как это делается в ПХП. ;) |
Вот нечто похожее на декодирование УРЛ в ПХП...
https://www.php.net/manual/ru/function.urldecode.php |
nastya97core,
appending-array |
рони,
ksa, Есть форма, её заполняют и она отправляется через Fetch formData. Она отправляется на php и если результат положителен то она возвращает вместе с данными ещё и те данные сформированные formData в формате json. Я их засовываю в URL history.pushState(null, null, '?filtr='+JSON.stringify(res.post)) Проблема заключалась в том, что мне нужно по GET запросу заполнить форму (то есть восстановить значения до перезагрузки). Короче говоря решение было вот в этой строке:
let objGet = JSON.parse(decodeURI(window.location.search.replace('?filtr=', ''))); // decodeURI()
Теперь ещё проблема. Как проверить, есть ли в window.location.search ?filtr= ? А то я пытаюсь распарить даже тогда, когда ничего в get нет и он ломает весь JS... |
| Часовой пояс GMT +3, время: 09:59. |