非同期なHTTP通信を実装出来ます。指定したURLを読み込み、読み込んだデータを取得します。私的にはサーバ側のデータを受取るというのがキモだと思ってます。最初、フォームからの入力情報をうにゃうにゃするという目的で調べ始めたため、どうにも頭が固くなってましたが、別にformのデータをどうにかするんじゃなくてもいいんですよね。受取ったファイルを表示することも出来ます。基本的には、URLで指定した情報を受取る(その際、付属でこっちからデータを渡して、サーバ側で処理も出来るよ)と覚えると、覚えやすいかもしれません。objectのプロパティの種類が多すぎるため、私的に主に使用するもののみを記載します。詳細を確認する際は、公式か下記の参考サイトをご確認下さい。urlリクエスト送信先のURLを記載します。規定値は自身のURL。type送信形式を指定します。post規定値はgetdataサーバに送信するデータを設定します。配列の場合は、同じ変数名でシリアライズする必要があります。timeoutタイムアウトの時間をミリ秒で指定します。dataTypeサーバからの受信形式を指定します。省略すると、jQuery側で自動的に設定を行ないます。いずれかで設定します。async非同期の有無を設定します。公式とほほのjQuery入門この中でも、timeoutは設定する事をオススメします。ユーザの通信環境によっては、かなりの時間に処理が掛かってしまうことも考えられます。完了するまでひたすらに通信を行なうのは、ユーザ離脱の原因にもなりますので一定時間が過ぎたらajax通信を停止する設定をする事をオススメします。AJAX通信をするときはタイムアウト処理を必ず入れてほしい(切実)処理後のステータス通信が成功したか、失敗したか等を指定します。実際にコードを見たほうが早いと思いますので、記載します。エラー内容});例1のalwaysの引数については、doneとfailで変わります。引数の内容はそれぞれの引数と同じです。"parseerror"のいずれかの結果が文字列で返ります。xhrXMLHttpRequestオブジェクトを取得します。IEの場合は、ActiveXObjextです。failxhrdoneの第三引数と同様statusdoneの第二引数と同様errorエラー内容が入ってます。例2のthenも引数は同様です。thenを続けて書く事も出来ます。$.ajaxSetupメソッド$.ajaxメソッドのObjectを事前に設定できます。言わなくてもいいかもですが、$.ajaxメソッドより先に宣言する必要があります。$.ajaxメソッド側でObjectの追加や上書きも出来ます。console.log(status);});とは言え、やはりformでしょういきなり所感で、formじゃなくてもいいんだよ!とか言っておりますが、それでもformで情報を送信して、送信した情報をサーバ側で処理したものを受取るというケースは多いと思います。(私も元々それで調べてますし)その際の使用例や、便利なメソッドなども下記に記載します。シリアライズajaxでdataを一つずつ指定してもいいですが、serializeメソッドを使用すると一発で変換できます。チェックが付いていないとシリアライズされません。シリアライズされません。serializeメソッドformの入力値をクエリ文字列に変換します。ような文字列serializeArrayメソッドformの入力値を配列に変換します。配列の中にオブジェクトが入っており、nameプロパティとvalueプロパティが生成されます。下記のような配列内容に変換されます。Namesubmitformでbuttonのtypeを指定しない場合はsubmitが走ります。<button>送信</button></form>submitさせたくないときは、html側で対応する際は、typeをbuttonに設定する。preventDefaultメソッドを使用します。json_encode($val);サンプルフォームではなく、ただtxtファイルを取得する。});});二つ以上のデータを非同期に処理したいさて、これまでの例では一つのデータを処理する方法を記載しました。二つ以上のデータを処理したい場合はどうすればいいでしょうか。単純に増やしてみます。});});参考$.ajaxメソッドをネストする事で、まぁ一応処理は出来てます。可読性良くないですよね。直列処理をするのであればthenで繋ぐ事が出来ます。});});こんな感じで、戻り値として$.ajaxを返すと、ネストさせることもなく書く事ができます。then区切りでネストもないし、大分見やすくなったと思います。ここでエラー時の処理も書くとどうでしょうか。});});戻り値を成功時と失敗時の二つに設定しないといけないとか、結構面倒くさいです。コードも無駄に長くなってしまってる気もします。そこで$.Deferredメソッドを使用します。$.Deferredメソッド肝となる箇所は、下記の三点だと思います。deferred.promise()タスク(タスクをこなしますという約束)deferred.resolve()タスクが正常に終わったことを通知(引数に指定した内容が、done()に引き渡される)deferred.reject()タスクが異常終了した事を通知(引数に指定した内容が、fail()に引き渡される)色々な使い方が出来ますので、あくまで一例ですがpromiseを返す関数を作って可読性よく処理できる例を作ってみたいと思います。いう上から順番に処理される。