参考
http://mikaduki.info/webprogram/js/jquery/1534/
非同期通信と同期通信
ホストに対してリクエストを送り、ホストからレスポンスが返ってきて全てのデータを受信したら、次の処理に移れるのが同期通信です。
非同期通信というのは、レスポンスをまたずして次のリクエストを送ることができます。
jQueryでAjaxを使う
jQueryにはajaxというメソッドがあって、同期通信、非同期通信、どちらも使用することができます。
XMLHttpRequestオブジェクトでも行えますが、今日はjQueryのajaxメソッドについて書きたいのでXMLHttpRequest使いたい人はMDNのサンプルをみてください。
MDN url
https://developer.mozilla.org/ja/docs/XMLHttpRequest/Synchronous_and_Asynchronous_Requests
データを読み込む場合
よく使うやり方。
jQuery.ajax( "moge.json",{ type : 'POST', //GET,POSTを指定してHTTPの通信タイプを決定 dataType: 'json', //json,jsonp,html,text,script,xmlが指定できます。 success: function(json){ //成功した場合に走る関数です。 console.log(json); } } );
1つ目の引数には、データへのパスを書いてあげます。
2つ目の引数にはオブジェクトを定義します。
このオブジェクトの中に定義出来るものはいろいろありますが、ここではよく使うものだけ紹介するよていです。
XMLHtppRequest cannot loadが出る場合がありますが、これはドメインが同一でないと発生するエラーです。
Webサーバー上で動作させるなり、絶対パスで指定してあげると多分出なくなると思います。
データを送りたい場合
dataの中に、名前と値をセットで入れると、phpにデータが送られるというサンプルです。
jQuery.ajax( "moge.php",{ type : 'POST', dataType: 'text', data: { //nameとvalueをセットでオブジェクトの中に定義する "age" : 18, "name" : "mogeri", }, success: function(post){ console.log(post); } } );
textをjsonとかに変えてphp側にjsonでデータを吐き出させると、jsonでも受け取れます。
エラーを受け取りたい場合
オブジェクトに1個エラーを定義して関数を書きます。
jQuery.ajax( "moge.php",{ type: "POST", dataType: 'json', data: { "age" : 18, "name" : "mogeri", }, success: function(post){ console.log(post); }, error : function() { //こんな感じです。 console.log("era-desuyo"); }, complete: function() { //読み込み完了時にもプログラムが動かせます。 console.log("読み込みOK"); } } };