【Ajax】フォームの値(データ)をサーバーに送信する
公開日:
更新日:
カテゴリー: Ajax
ユーザーがフォームに入力した情報をAjaxでサーバーに送信する方法を説明しています。
フォーム送信の基本
HTMLでフォームを作成し、フォームに情報を入力してsubmitボタンを押すと指定のサーバー(指定のファイル)にデータが送信されます。
このとき、フォームに入力された情報はブラウザが自動的にシリアライズ(フォーム送信形式の文字列に変換すること)しています。
そのためAjaxでフォームに入力された情報を送信する場合、送信する値はシリアライズしなければなりません。
シリアライズを行う方法
jQueryにはフォームに入力された値をシリアライズするメソッドがあります。
変数= $('フォームのエレメント').serialize();
これを利用すればフォームに入力された値をシリアライズすることででき、これをパラメータとすることでAjax送信ができます。
フォームの値(データ)をサーバーに送信する
ということで、フォームを作成し、それに内容を書き込んでAjaxでサーバーに送信したいと思います。
index.html
index.htmlを作成し、以下を記述します。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>サンプルプログラム</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script> <script type="text/javascript"> <!-- function action(){ var str = $('#testform').serialize(); $.getJSON('get-data.php', str, csschange); } function csschange(result){ $('#output').text(result.message); $('#output-namae').text(result.namae); $('#output-comment').text(result.comment); } //--> </script> </head> <body> <form id="testform" onsubmit="return false;"> <p>名前を入力してください<br /> <input type="text" name="namae"></p> <p>コメントを入力してください<br /> <input type="text" name="comment"></p> </form> <p><input type="button" value="サンプルの実行" onclick="action();"></p> <div id="output">get-data.phpにフォームに入力された情報をGET送信し、PHPの処理結果をJSON形式で受け取り、ここにテキストを表示します。</div> <div id="output-namae"></div> <div id="output-comment"></div> </body> </html>
get-data.php
次にGET送信されてきたデータを受け取るPHPファイルget-data.phpを作成します。
<?php //GET送信されたデータを受け取る $namae = $_GET['namae']; $comment = $_GET['comment']; //渡すデータを配列に格納 $array_data = array(message=>'以下のデータが送られてきました', namae=>$namae, comment=>$comment); //ヘッダーの設定 header('Content-type:application/json; charset=utf8'); //データを出力渡すデータ(配列)をJSON形式にデコードして出力 echo json_encode($array_data); ?>
これら2つのファイルをアップロードし、index.htmlにアクセスすればちゃんと動作するはずです。
動作確認はサンプルを確認してください。
あわせて読んでほしい!
コメント
2:管理人:2015/11/14 19:33:50
そうです、サーバー上にあるPHPファイルのパスを指定します。
コメントフォーム
1:kajironpu:2015/11/12 15:15:22
$.getJSON('php/get-data.php', str, csschange);
}
お世話になっております、上のパスは、サーバー上の
PHPのファイルのあるフォルダーを指定するのでしょうか?