Это немного напыщенная речь, но также очень серьезный вопрос. jQuery изменил сериализацию параметров ajax следующим образом:
В jQuery 1.4 добавлена поддержка сериализации вложенных параметров в jQuery.param с использованием подхода, популярного в PHP и поддерживаемого Ruby on Rails. Например, {foo: ["bar", "baz"]} будет сериализовано как "foo [] = bar & foo [] = baz".
Ты это понял?
Вы называете свой параметр foo
. jQuery теперь переименовывает это в foo[]
за вашей спиной, если значение foo является массивом. Причина этого в том, что некоторые PHP-пользователи и Rubyists ожидают, что сторонние API переименуют вещи для них.
Назовите меня старомодным, но когда я помещаю что-то в карту, с ключом x
, я ожидаю найти значение в x
. Или, по крайней мере, это поведение по умолчанию с необязательным переопределением.
Даже со мной согласна документация:
Если значение является массивом, jQuery
сериализует несколько значений с одинаковыми
ключ т.е. {foo: ["bar1", "bar2"]}
становится '& foo = bar1 & foo = bar2'.
Правильно ли я считаю, что это просто неправильное решение от команды jQuery?