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

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 を使用してフォーム データを取得 - オブジェクト フォームでフォーム データを取得

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
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