Wprowadzenie: powiedzmy, że robimy formularz, który ma działać tradycyjnie (w przypadku gdy jest wyłączony JS w przeglądarce) oraz asynchronicznie. W momencie nadawania nazw polom formularza, wygodnie jest używać [kwadratowych][nawiasów]. Dzięki temu po przyjściu do serwera dane są zamienione na kilka zagnieżdzonych w sobie tablic - grupowanie zostaje zachowane (przynajmniej tak to działa w przypadku Apache i PHP). W tablicach, które otrzymamy na serwerze, kluczami będą nazwy, które wpisaliśmy kwadratowych nawiasach.
<form action="/" method="post">
<input type="text" name="contact[name]" placeholder="Name" />
<input type="text" name="contact[email]" placeholder="E-mail" />
<input type="text" name="contact[captcha][input]" placeholder="Captcha" />
<input type="hidden" name="contact[captcha][id]" value="abc123" />
</form>
W powyższym przykładzie w pozycji o kluczu captcha będzie znajdować sie tablica z dwoma kluczami id oraz input. Wszystko super - tylko co jeśli ten sam formularz chcemy wysłać asynchronicznie, w formacie JSON również z zachowaniem grupowania pól? Dla niecierpliwych, oto moje rozwiązanie tego problemu. A dla wszystkich innych, poniżej zamieszczam bardziej szczegółowy opis.