jQueryのajax()について

ajaxとは?

AsynchronousJAvascriptXmlの頭文字。

非同期のjavascriptによる(XMLを用いた)通信。

もう少し具体的にいうと、javascriptという言語で記述したプログラムによって、通常の通信と同期せずに(非同期に)、データの通信をする事。

昔はXMLという形式での通信が多く使われていたそうだが、現在はjson形式が多い。

jsonrubyでいうハッシュのようなもので、キーとバリューでデータを管理している。とてもシンプルな形であり、他の言語への変換もしやすく、基本的な値のやりとりだけであればjsonで行うのが簡単。

 

書き方の基本

以下は基本的な書き方の例。

$.ajax({

    url: 'https//....'            //送信したい先のurl

    type: 'POST',             //HTTPメソッドの指定

    data: {                    

        id: 1                       //送信したいデータ

    }

    dataType: 'json'        //送信するデータの形式

})

.done(function( data ){

    //通信に成功した時の処理

})

.fail(function( data ){

    //通信に失敗した時の処理

})

.always(function( data ){

    //必ず行いたい処理

})

以下は全体に共通する基本的な事項。

  • 「:」の右辺に記述する文字が文字列の場合、''または""でくくる。数値や変数、真偽値はそのままで良い。
  • オプションが下に続く場合は、各オプションの末尾に , をつける。一番最後は不要。

 

 

よく使うオプション

  1. HTTPメソッドの指定
    HTTPのリクエストメソッド(GET/POST)を指定するには、type オプションを指定する。
    $.ajax({   
        type: 'POST',
    ...
  2. 送信先の指定
    送信先のurl指定には url オプションを指定する。
    $.ajax({
        url: 'https://...',
    ...
  3. 受け渡すデータの指定
    data オプションにキーとバリューの形で指定してあげる。
    $.ajax({
        data: {
            id: 1,
            message: 'hello'
        },
    ....
    GETならクエリパラメータ(http://hoge/hoge.com?id=1&message=hi のようにurlにくっついた形)として、
    POSTならbodyに格納されて、データが送信される。

  4. 受信データタイプの指定
    受信データタイプは dataTypeオプションに設定する。
    jsonデータを受信する場合は以下のようになる。

    $.ajax({
        dataType: 'json',
    ....

     

結果の受信

「done」「fail」「always」で結果を受信することができる。

「done」オプションは通信が成功した時、

「fail」オプションは通信に失敗した時、

「always」オプションは通信が完了した時に起動される。

$.ajax({
    url: 'http://...',
    data: {

        id: 1,

        message: 'hi'
    },
    dataType: 'html'
})
.done(function( data ){
    //...
})
.fail(function( data ){
    //....
})
.always(function( data ){
    //....
});

この「.done」「.fail」「.always」となっている部分の第一引数( data ) には、サーバーから返されたデータが入っている。