자바 스크립트없이 HTML 양식에서 배열 게시


90

약간 복잡한 양식이 있으며 기본적으로 튜플 배열을 게시하여 서버 측 (PHP) 처리를 단순화하기를 희망합니다.

양식의 첫 번째 부분은 사용자를 나타냅니다 .

  • 이름
  • 이메일
  • 주소
  • 기타

양식의 두 번째 부분은 트리를 나타냅니다 .

  • 과일
  • 신장
  • 기타

문제는 동일한 형식으로 단일 사용자 에 대해 여러 트리 를 게시 할 수 있어야한다는 것입니다. 트리 배열이 있는 단일 사용자 로 정보를 보내고 싶지만 양식과 관련하여 너무 복잡 할 수 있습니다. 유일하게 떠오르는 것은 자바 스크립트를 사용하여 User 객체와 Tree 객체 배열로 JSON 메시지를 생성하는 것입니다. 그러나 더 많은 사용자를 지원하기 위해 자바 스크립트를 사용하지 않는 것이 좋습니다 (일부 사용자는 스크립트가 꺼져 있음).


1
어레이가 주문을 보장합니까? 여러 필드가있는 Tree 개체의 배열을 원하므로 Tree를 나타 내기 위해 여러 배열을 사용해야하고 배열을 정렬해야 해당 배열이 나타내는 Tree를 파악할 수 있습니다.
styfle

답변:


154

이것을 확인하십시오.

<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'
        )
    )
)

6
배열 인덱싱에 허용되는 문자는 무엇입니까? ,. :`@를 사용할 수 있습니까? 예 : tree[tree 1][fr ui_t] tree[tree.1][fru:it] tree[tree@1][fru,it] _는 키 이름 지정에서 안전한 구분자뿐입니까?
CoR 2014-06-17

4
것입니다 tree[][fruit]tree[][height]배열 자동으로 인덱스에 유효하지?
Wobbles

이 제출 된 데이터를 js의 배열 / 객체로 가져 와서 제출 콜백에 사용하려면 어떻게해야하나요? 나는 시도 new formData($("form")[0])했고 jQuery는 $("form").serializeArray()모두 name="tree[tree1][fruit]"문자열 로 반환 합니다 .... help
santosh

참고 :이 같은 폼 데이터를 수집에 JQuery와 기능이 작동하지 않습니다 .serialize()또는.serializeArray()
SubjectDelta

65

다음과 같이 입력 이름에 빈 대괄호를 추가하여 동일한 이름의 여러 입력을 게시하고 배열에 저장하도록 할 수도 있습니다.

<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' )
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.