0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Expressで多次元配列でフォームの入力値を受け取る

Last updated at Posted at 2022-11-30

Expressでフォームの入力値を配列で受け取るにはexpress.urlencodedの指定が必要。

app.use(express.urlencoded({extended: true}));

Expressでbody-parserがいらない理由: “bodyparser is deprecated”

どういった形式で指定することが出来るかのサンプルを以下に記載する。

   <input  type="text" name="sample"/>

    <input  type="text" name="apple[0]" value="あ"/>
    <input  type="text" name="apple[1]" value="い"/>
    <input  type="text" name="apple[2]" value="う"/>
    
    <input  type="text" name="lemon[]" value="あ"/>
    <input  type="text" name="lemon[]" value="い"/>
    <input  type="text" name="lemon[]" value="う"/>

    <input  type="text" name="pear" value="あ"/>
    <input  type="text" name="pear" value="い"/>
    <input  type="text" name="pear" value="う"/>

    <input  type="text" name="banana[blue][]" value="あ"/>
    <input  type="text" name="banana[blue][]" value="い"/>
    <input  type="text" name="banana[red][]" value="う"/>
    <input  type="text" name="banana[red][]" value="え"/>

    <input  type="text" name="grape[1][1][1]" value="あ"/>
    <input  type="text" name="grape[1][1][2]" value="い"/>
    <input  type="text" name="grape[1][2][1]" value="う"/>
    <input  type="text" name="grape[1][2][2]" value="え"/>
    <input  type="text" name="grape[2][1][1]" value="お"/>
    <input  type="text" name="grape[2][1][2]" value="か"/>
    <input  type="text" name="grape[2][2][1]" value="き"/>
    <input  type="text" name="grape[2][2][2]" value="く"/>

    <input  type="text" name="Mango[1][1]" value="1"/>
    <input  type="text" name="Mango[1][2]" value="2"/>
    <input  type="text" name="Mango[2][]" value="3"/>
    <input  type="text" name="Mango[2][]" value="4"/>

    <input  type="checkbox" name="Melon[]" value="Cantaloupe" checked  />
    <input  type="checkbox" name="Melon[]" value="Honeydew" checked />
    <input  type="checkbox" name="Melon[]" value="Watermelon"/>

    <input  type="radio" name="Orange[]" value="Clementine"   />
    <input  type="radio" name="Orange[]" value="Mandarine" checked />
    <input  type="radio" name="Orange[]" value="Tangerine"/>

console.log(req.body);で出力すると以下の通りになる。

{
  sample: '',
  apple: [ '', '', '' ],
  lemon: [ '', '', '' ],
  pear: [ '', '', '' ],
  banana: { blue: [ '', '' ], red: [ '', '' ] },
  grape: [ [ [Array], [Array] ], [ [Array], [Array] ] ],
  Mango: [ [ '1', '2' ], [ '3', '4' ] ],
  Melon: [ 'Cantaloupe', 'Honeydew' ],
  Orange: [ 'Mandarine' ]
}

console.logだと深い階層は[Array]表示になるので
console.log(JSON.stringify(req.body.grape,null,''));で出力すると
以下の通りになる。

[[["",""],["",""]],[["",""],["",""]]]
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?