Mam formularz, który jest trochę złożony i mam nadzieję uprościć przetwarzanie po stronie serwera (PHP) przez natywne POSTowanie tablicy krotek.
Pierwsza część formularza przedstawia Użytkownika :
- Imię
- Nazwisko
- Adres
- itp
Druga część formularza przedstawia drzewo :
- Owoc
- Wysokość
- itp
Problem polega na tym, że muszę mieć możliwość POST wielu drzew dla jednego użytkownika w tej samej formie. Chciałbym wysłać informacje jako pojedynczy użytkownik z tablicą drzew, ale może to być zbyt skomplikowane, aby zrobić to z formularzem. Jedyne, co przychodzi na myśl, to użycie javascript do utworzenia wiadomości JSON z obiektem User i tablicą obiektów Tree. Ale byłoby miło uniknąć javascript do obsługi większej liczby użytkowników (niektórzy ludzie mają wyłączone skrypty).
Odpowiedzi:
sprawdź ten.
<input type="text" name="firstname"> <input type="text" name="lastname"> <input type="text" name="email"> <input type="text" name="address"> <input type="text" name="tree[tree1][fruit]"> <input type="text" name="tree[tree1][height]"> <input type="text" name="tree[tree2][fruit]"> <input type="text" name="tree[tree2][height]"> <input type="text" name="tree[tree3][fruit]"> <input type="text" name="tree[tree3][height]">
powinno to skończyć się tak w tablicy $ _POST [] (format PHP dla łatwej wizualizacji)
$_POST[] = array( 'firstname'=>'value', 'lastname'=>'value', 'email'=>'value', 'address'=>'value', 'tree' => array( 'tree1'=>array( 'fruit'=>'value', 'height'=>'value' ), 'tree2'=>array( 'fruit'=>'value', 'height'=>'value' ), 'tree3'=>array( 'fruit'=>'value', 'height'=>'value' ) ) )
źródło
tree[tree 1][fr ui_t]
tree[tree.1][fru:it]
tree[tree@1][fru,it]
czy _ tylko bezpieczny separator w nazewnictwie kluczy?tree[][fruit]
itree[][height]
nie jest ważne, aby automatycznie indeksu tablicy?new formData($("form")[0])
i jQuery$("form").serializeArray()
zarówno zwracającname="tree[tree1][fruit]"
jako ciąg znaków ... pomoc.serialize()
lub.serializeArray()
Możesz także opublikować wiele danych wejściowych o tej samej nazwie i zapisać je w tablicy, dodając puste nawiasy kwadratowe do nazwy wejściowej w następujący sposób:
<input type="text" name="comment[]" value="comment1"/> <input type="text" name="comment[]" value="comment2"/> <input type="text" name="comment[]" value="comment3"/> <input type="text" name="comment[]" value="comment4"/>
Jeśli używasz php:
print_r($_POST['comment'])
otrzymasz to:
Array ( [0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4' )
źródło