Как массив преобразовать в 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, время: 15:12. |