У меня есть форма, которая немного сложна, и я надеюсь упростить обработку на стороне сервера (PHP), изначально отправив массив кортежей POST.
Первая часть формы представляет пользователя :
- Имя
- Фамилия
- Эл. адрес
- Адрес
- и т.д
Вторая часть формы представляет собой дерево :
- Фрукты
- Высота
- и т.д
Проблема в том, что мне нужно иметь возможность размещать несколько деревьев для одного пользователя в одной форме. Я хотел бы отправить информацию как один пользователь с массивом деревьев, но это может быть слишком сложно для формы. Единственное, что приходит в голову, - это использование javascript для создания некоторого сообщения JSON с объектом User и массивом объектов Tree. Но было бы неплохо избежать использования javascript для поддержки большего числа пользователей (у некоторых людей скрипты отключены).
Ответы:
проверьте это.
<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]">
он должен так закончиться в массиве $ _POST [] (формат PHP для упрощения визуализации)
$_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' ) ) )
источник
tree[tree 1][fr ui_t]
tree[tree.1][fru:it]
tree[tree@1][fru,it]
_ только безопасный разделитель в именовании ключей?tree[][fruit]
иtree[][height]
недействительно автоматически индексировать массив?new formData($("form")[0])
$("form").serializeArray()
name="tree[tree1][fruit]"
.serialize()
или.serializeArray()
Вы также можете опубликовать несколько входов с тем же именем и сохранить их в массив, добавив пустые квадратные скобки к имени входа следующим образом:
<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"/>
Если вы используете php:
print_r($_POST['comment'])
вы получите это:
Array ( [0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4' )
источник