Отправить Map() через Ajax
Как отправить коллекцию Map через Ajax ?
var arrMap = new Map([['test','value_1],['test2','value_2']])
$.ajax ... data: { datas: arrMap } ...
По итогу ничего не отправляется.
Proof
Ответы (1 шт):
Формально говоря, в исходном виде - никак. Map не сериализуется (map ведь это не просто пары ключ значение, но и сохранение порядка ключей и типы ключа могут быть произвольны, а не только строка/число). У вас есть несколько вариантов решения проблемы:
Перед отправкой конвертировать
mapв обычный объект. Самый простой способ будетObject.fromEntries, но он пока что охватывает порядка 90% глобальных пользователей, поэтому возможно придется другими способами перебрать ключи словаря и сформировать объект.Возможно, не стоит использовать
Mapизначально. Чаще всего для этих целей используют обычный объект, и тогда вопроса сериализации не будет. Ваш исходный массив легко преобразуется в объект с помощьюarr.reduce((acc,v) => (acc[v[0]] = v[1], acc), {})преобразовать
mapв массив массивов пар ключ-значение, подобный тому, как у вас в коде задано начальное значение при создании map. Реализация тоже не замысловатая, но на стороне пхп придется пересобирать обратно, что вряд ли целесообразно.

