html
  • perl
  • hash
  • dancer
  • 2014-10-11 4 views 1 likes 
    1

    여러 사람에 대한 데이터를 제출하는 데 사용되는 양식이 있습니다. 이 각 사람에 대한 여러 속성이 있고, 내가 좋아하는 그 (것)들을 그룹화하고있어 다음다차원 해시를 만들기 위해 구문 분석 양식 (POST) 데이터

    <input type=hidden name="person1[firstname]" value='Sam'/> 
    <input type=hidden name="person1[lastname]" value='Higgins'/> 
    
    <input type=hidden name="person2[firstname]" value='Jiminy'/> 
    <input type=hidden name="person2[lastname]" value='Cricket'/> 
    
    ...etc 
    

    내가 수행 할 때 다음

    my %hash = params; 
    die Dumper \%hash; 
    

    를 내가 얻을 :

    VAR1 = { 
          'person1[firstname]' => 'Sam', 
          'person1[lastname]' => 'Higgins', 
          'person2[firstname]' => 'Jiminy', 
          'person2[lastname]' => 'Cricket', 
    }; 
    

    때 I을 다음과 같은 것을 예상했다 :

    VAR1 = { 
          'person1' => { firstname => 'Sam', lastname => 'Higgens' }, 
          'person2' => { firstname => 'Jiminy', lastname => 'Cricket' }, 
    }; 
    

    위의 방법을 사용할 수 있습니까, 아니면 내 HTML에서 잘못하고 있습니까?

    편집

    또한 마지막에 빈 괄호와 함께 시도했다 :

    <input type=hidden name="person1[firstname][]" value='Sam'/> 
    

    하지만 준 단지 :

    'person1[firstname][]' => 'Sam', 
    
    +0

    댄서가 나타나지 않으므로 입력 이름'person [1] [firstname]'및 'person [1] [lastname]'...을 작성하여 양식에서 더 쉽게 생활 할 수 있습니다. 입력으로부터 다차원 구조를 생성합니다. 흠. –

    +0

    @ialarmedalien 고마워요.하지만 그게 예제 일 뿐이에요. 저는 그걸 간단하게하고 싶었 기 때문에 실제 구조를주고 싶지 않았습니다. – a7omiton

    +1

    json 문자열로 변환하여'JSON'을 사용해 보았습니다. key 'person1 [firstname]' – a7omiton

    답변

    0

    더 많은 질문에 대답하기 위해 링크를 제공하는 것보다 :

    ,515,

    는 I 특히 비동기 (AJAX)에 데이터를 전송하기 위해, 플러그 (https://github.com/marioizquierdo/jquery.serializeJSON)를 사용하여 댄서에게 JSON 문자열의 hashref를 생성 from_json 방법을 이용 jQuery를 사용하여 용액으로했다.

    serializeJSON 플러그인이 제공하는 함수가 JSON 객체를 만들고이 댄서가 적절한 구조로 변환되지 않기 때문에 string을 강조합니다.

    예 HTML :

    <input type=hidden name="person1[firstname]" value='Sam'/> 
    <input type=hidden name="person1[lastname]" value='Higgins'/> 
    

    JS (jQuery를) 그러므로 당신은 댄서가 동의 : 아래

    코드입니다 않는 JSON 문자열을 만들 JSON.stringify()를 사용할 필요가

    var formData = $(this).serializeJSON(); 
    console.log(formData); 
    $.ajax({ 
        'url': '/your_url', 
        'type': 'POST', 
        'data': JSON.stringify(formData), 
        'success': function(res){ 
         console.log(res); 
        } 
    }); 
    

    Perl (댄서) :

    post '/your_url' => sub { 
        my $json = request->body; 
        use Data::Dumper; 
        my $hashref = {}; 
        $hashref = from_json($json); 
        die Dumper \$hashref->{person1}->{name}; # 'Sam' 
    } 
    

    도와 주신 모든 분들께 감사드립니다!

    1
    #!/usr/bin/perl 
    use Data::Dumper; 
    my $orginal = { 
          'person1[firstname]' => 'Sam', 
          'person1[lastname]' => 'Higgins', 
          'person2[firstname]' => 'Jiminy', 
          'person2[lastname]' => 'Cricket', 
    }; 
    
    my $result = {}; 
    foreach my $key (keys %$orginal) 
    { 
        $value = $orginal->{$key}; 
        $key =~ m/^(.*)\[(.*)\]$/; 
    
        #$1 = for example person1 
        #$2 = forexample firstname 
        $result->{$1}->{$2} = $value; 
    
    
    } 
    
    print Dumper($result); 
    #RESULT: 
    
    # $VAR1 = { 
    #   'person1' => { 
    #       'firstname' => 'Sam', 
    #       'lastname' => 'Higgins' 
    #      }, 
    #   'person2' => { 
    #       'firstname' => 'Jiminy', 
    #       'lastname' => 'Cricket' 
    #      } 
    #   }; 
    
    +0

    감사합니다. Luke,하지만 구조를 직접 만들 필요가없는 해결책을 찾았습니다. – a7omiton

     관련 문제

    • 관련 문제 없음^_^