JQuery を使用してフォーム データを取得する

Anika Tabassum Era 2024年2月15日
JQuery を使用してフォーム データを取得する

この記事では、JQuery を使用してフォーム データを取得する方法について説明します。 serialize() メソッドは、フォームの送信や入力フィールドの更新からデータを取得するために広く使用されています。

別のメソッド serializeArray() は、フォーム データを配列形式で表現するために並列に使用されます。 フォーム データをオブジェクトとして保存する形式は、定義済みのメソッドとまだ統合されていますが、それも可能です。

上記の各アプローチに従う方法を学びましょう。

JQuery を使用してフォーム データを取得する

jQuery では、フォームまたは入力フィールドのデータをフェッチする場合、次の 2つの方法があります。 1つは serialize() メソッドで、もう 1つは serializeArray() メソッドです。

これらの手法は、ユーザーの好み、ユーザーの分類などを完全に把握している場合にフォーム データを取得するのに役立ちます。 これらはデータベースに保存することもできます。

では、フォームデータを取得するときの形式は何ですか?

serialize() メソッドは文字列を返し、異なる入力タイプは & で区切られます。 最後に、よりスケーラブルな方法でフォーム データをフェッチする serializeArray() メソッドがあります。

データを配列として表示します。 そしてここで、それらのデータをオブジェクトとして取得できるかどうかも調べます。 それでは、コード セグメントに進みましょう。

serialize() メソッドを使用してフォーム データを取得する

この例では、2つのフィールドがあります。 1つの text タイプの入力フィールドと、もう 1つは単純な select-option セクションです。 これらのフィールドにどのような入力を入力しても、serialize() メソッドを使用して、これらのデータを文字列形式で取得できます。 それでは、コード ベースで何が起こっているのか見てみましょう。

コードスニペット:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
  <title>form data</title>
  <style>
  div {
    margin-top: 27px;
    }
  #serialize {
    background-color: #eee;
    border: 1px solid #111;
    padding: 3px;
    margin: 9px;
    width: 300px;
    }
  </style>
</head>
<body>
  <form action="">
    Name: <input type="text" name="name">
    <select name="hair" id="hair">
      <option value="Hair">Hair</option>
      <option value="black">black</option>
      <option value="brown">brown</option>
      <option value="blue">brown</option>
    </select>
  </form>
  <div>Serialize: 
  <div id="serialize"></div>
  </div>
  <script>
    $(function() {
    var update = function() {
        $('#serialize').text(
            JSON.stringify($('form').serialize())
        );
    };
    update();
    $('form').change(update);
})
  </script>
</body>
</html>

出力:

jquery を使用してフォーム データを取得 - シリアル化メソッドを使用してフォーム データを取得

Name フィールドに値を入力すると、更新が追加されていることがわかります。 また、セレクト ボックスでは、髪の色は に選択され、serialize() メソッドによって決定された文字列で変更されます。

serializeArray() メソッドを使用してフォーム データを取得する

この特定の例は、前のセグメントで実行された同じタスクを意味しますが、違いは、ここでの出力が配列形式になることです。 配列はより定義されており、この配列規則は典型的なスタイルとは異なります。 代わりに、オブジェクトの配列です。

したがって、0 インデックス付き配列要素は最初の入力フィールドの key-pair 値を保持し、1 インデックス付き配列は select-option の選択肢を格納します。 しかし、まず、コードを確認しましょう。

コードスニペット:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
  <title>form data</title>
  <style>
  div {
    margin-top: 27px;
    }
  #serializearray{
    background-color: #eee;
    border: 1px solid #111;
    padding: 3px;
    margin: 9px;
        width: 300px;
    }
  </style>
</head>
<body>
  <form action="">
    Name: <input type="text" name="username">
    <select name="hair" id="hair">
      <option value="Hair">Hair</option>
      <option value="black">black</option>
      <option value="brown">brown</option>
    </select>
  </form>
  <div>Serialize Array: 
  <div id="serializearray"></div>
  </div>
  <script>
    $(function() {
    var update = function() {
        $('#serializearray').text(
            JSON.stringify($('form').serializeArray())
        );
    };
    update();
    $('form').change(update);
})
  </script>
</body>
</html>

出力:

jquery を使用してフォーム データを取得 - serializearray メソッドを使用してフォーム データを取得

ここでは、値が変更され、髪の色が更新されます。 しかし、結果は配列形式であり、エントリとして 2つのオブジェクトを取得していることに気付きました。

次に、フォーム データをオブジェクトとして直接保存できるかどうかを調べます。 それでは、行きましょう。

オブジェクト フォームでフォーム データを取得する

この例では、前と同じコードを使用しますが、ここでは 2つの div 要素を使用して 2つのオブジェクトを出力する必要があります。 serializeArray() メソッドによって生成された配列をループし、それらをオブジェクトとして解析する $.each() メソッドを追加しました。

配列インデックスを定義するために 2つの条件文を使用していることに気付くでしょう。 それ以外の場合は、最後の要素をループして、最後のフィールドのみを生成します。 まず、コード スニペットを確認しましょう。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
  <title>form data</title>
  <style>
  div {
    margin-top: 27px;
    }
  #serializeobj1, #serializeobj2{
    background-color: #eee;
    border: 1px solid #111;
    padding: 3px;
    margin: 9px;
    width: 300px;
    }
  </style>
</head>
<body>
  <form id="form">
     Name: <input type="text" name="username">
    <select name="hair" id="hair">
      <option value="Hair">Hair</option>
      <option value="black">black</option>
      <option value="brown">brown</option>
      <option value="green">brown</option>
    </select>
  </form>
  <div>Serialize Object: 
  <div id="serializeobj1"></div>
  <div id="serializeobj2"></div>

  </div>
  <script>
    $(function() {
      var obj = {}
      var cnt=0;
    var update = function() {
           $.each(
             $('#form').serializeArray(), function(i, val){
               if(i==0){
               $('#serializeobj1').text( 
                 JSON.stringify(
                   obj[i]=val
                 )
               )
              }
                if(i==1){
               $('#serializeobj2').text( 
                 JSON.stringify(
                   obj[i]=val
                 )
               )
              }
            })
    };
    update();
    $('form').change(update);
})
  </script>
</body>
</html>

出力:

jquery を使用してフォーム データを取得 - オブジェクト フォームでフォーム データを取得

Anika Tabassum Era avatar Anika Tabassum Era avatar

Era is an observer who loves cracking the ambiguos barriers. An AI enthusiast to help others with the drive and develop a stronger community.

LinkedIn Facebook

関連記事 - jQuery Form