jQuery入門 | Ajaxの使用 | Ajaxメソッド $.ajax() $.get() .load()

Ajaxメソッド

メソッド 説明
$.ajax() 非同期Ajaxを使用してHTTPリクエストを送信する。
$.get() 渡されたアドレスへGET方式のHTTPリクエストを送信する。
$.post() 渡されたアドレスへPOST方式のHTTPリクエストを送信する。
$.getScript() Webページにスクリプトを追加する。
$.getJSON() 渡されたアドレスへGET方式のHTTPリクエストを送信し、レスポンスとしてJSONファイルを受け取る。
.load() サーバーからデータを読み込み、読み込んだHTMLコードを選択した要素に配置する。

$.ajax()メソッド

jQueryはAjaxに関する便利なメソッドを多数提供している。

その中でも$.ajax()メソッドは、すべてのjQuery Ajaxメソッドの中核となる統合的なメソッドである。
$.ajax()メソッドは、HTTPリクエストを作成する強力で直感的な方法を提供する。

形式

jQuery.ajax( url [, settings] ) >> バージョン1.5以上
jQuery.ajax( settings )  >> バージョン1.0以上
  • url: リクエストURL。クライアントがHTTPリクエストを送るサーバーのアドレス。
  • settings: key/valueペアで構成されるAjaxリクエスト設定(optional)。
    • url: リクエストURL。
    • data: リクエストと一緒にサーバーへ送るstringまたはjson。
    • success(data, textStatus, jqXHR): リクエスト成功時に実行されるcallback関数。
    • dataType: サーバーから返されるdataの形式(default: xml, json, script, text, html)。

メソッドチェーン(method chaining)

メソッド名 説明
done HTTPリクエストが成功すると、要求したデータがdone()メソッドに渡される。
fail HTTPリクエストが失敗すると、エラーとステータスに関する情報がfail()メソッドに渡される。
always HTTPリクエストが成功しても失敗しても、always()メソッドは常に実行される。

次の例は、$.ajax()メソッドで使用できる代表的なオプションを説明している。

$.ajax({
    url: "/rest/1/pages/245", // クライアントがHTTPリクエストを送るサーバーのURLアドレス
    data: { name: "山田太郎" },  // HTTPリクエストと一緒にサーバーへ送るデータ
    method: "GET",   // HTTPリクエストメソッド(GET、POSTなど)
    dataType: "json" // サーバーが返すデータの型
})
// HTTPリクエストが成功すると、要求したデータがdone()メソッドに渡される。
.done(function(json) {
    $("<h1>").text(json.title).appendTo("body");
    $("<div class=\"content\">").html(json.html).appendTo("body");
})
// HTTPリクエストが失敗すると、エラーとステータスに関する情報がfail()メソッドに渡される。
.fail(function(xhr, status, errorThrown) {
    $("#text").html("エラーが発生しました。<br>")
    .append("エラー名: " + errorThrown + "<br>")
    .append("ステータス: " + status);
})
// 
.always(function(xhr, status) {
    $("#text").html("リクエストが完了しました!");
});

次の例は、$.ajax()メソッドの動作を示す簡単な例である。

var jqxhr = $.ajax("/rest/1/pages/245")
.done(function() {
  alert("成功");
})
.fail(function() {
  alert("失敗");
 })
.always(function() {
  alert("完了");
});
      
jqxhr.always(function() {
  alert("2回目の成功");
});

コードを実行

$.ajaxSetup()メソッド

共通の基本Ajaxリクエストを事前に設定するために使用する。

形式

jQuery.ajaxSetup( options )
  • optional: デフォルトAjaxリクエストの設定値(key/value)。

次の例は、あらかじめ$.ajaxSetup()に基本設定を行った後、Ajaxをそれぞれ呼び出している。

$.ajaxSetup({  
  url: '/api/users',  
  global: false,   
  type: "POST"     
});  

$.ajax({  
  // url not set here; uses '/api/users'  
  data: {'name': 'Dan'}  
});

$.ajax({  
  // url not set here; uses '/api/users'  
  data: {'name': 'John'}  
}); 

$.get()メソッド

jQueryでは、Ajaxを使用してGET方式のHTTPリクエストを実装した$.get()メソッドを提供している。
このメソッドを使用すると、サーバーにGET方式のHTTPリクエストを送信できる。

形式

jQuery.get(  url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
  • url: リクエストURL。
  • data: リクエストと一緒にサーバーへ送るstringまたはmap。
  • success(data,textStatus,jqXHR): リクエスト成功時に実行されるcallback関数。
  • dataType: サーバーから返されるdataの形式(default: xml,json,script,text,html)。

$.ajaxで表現

$.ajax({
  type: "GET",
  url: url,  
  data: data,  
  success: success,  
  dataType: dataType  
});  

次の例は、$.get()メソッドの動作を示す簡単な例である。

// GET方式でサーバーにHTTP Requestを送る。
$.get("/examples/media/request_ajax.php",
  { species: "猫", name: "ナビ", age: 3, }, // サーバーが必要とする情報も一緒に送る。
    function(data, status) {
      $("#text").html(data + "<br>" + status); // 受信したデータと送信成功の可否を表示する。
    }
   );
});

$.post()メソッド

jQueryでは、Ajaxを使用してPOST方式のHTTPリクエストを実装した$.post()メソッドを提供している。
このメソッドを使用すると、サーバーにPOST方式のHTTPリクエストを送信できる。

形式

$.post()メソッドの構文は次のとおりである。

$.post(URLアドレス[,データ][,コールバック関数]);
  • URLアドレス: クライアントがHTTPリクエストを送るサーバーのアドレスである。
  • データ: HTTPリクエストと一緒にサーバーへ送るデータを渡す。
  • コールバック関数: HTTPリクエストが成功したときに実行する関数を定義する。

$.ajaxで表現

$.ajax({
  type: "POST",
  url: url,  
  data: data,  
  success: success,  
  dataType: dataType  
});  

次の例は、$.post()メソッドの動作を示す簡単な例である。

// POST方式でサーバーにHTTP Requestを送る。
$.post("/examples/media/request_ajax.php",
  { name: "山田太郎", grade: "A" },           // サーバーが必要とする情報も一緒に送る。
  function(data, status) {
    $("#text").html(data + "<br>" + status); // 受信したデータと送信成功の可否を表示する。
  }
);

$.getJSON()メソッド

サーバーにデータをHTTP GET方式で送信した後、サーバー側のレスポンスをJSON形式で受け取るときに使用する。

形式

jQuery.getJSON( url [, data] [, success(data, textStatus, jqXHR)] )
  • url: リクエストURL。
  • data: リクエストと一緒にサーバーへ送るstringまたはmap。
  • success(data,textStatus,jqXHR): リクエスト成功時に実行されるcallback関数。

$.ajaxで表現

$.ajax({  
  url: url,  
  dataType: 'json',  
  data: data,  
  success: callback  
});  

$.getJSON("example?foo=1",   
    {   
        tags: "mount rainier",   
        tagmode: "any",   
        format: "json"   
    },   
    function(data) {   
        $.each(data.items, function(i,item) {   
          $("<img/>").attr("src", item.media.m).appendTo("#images");   
          if ( i == 3 )
		      return false;   
        });   
    }); 

.load()メソッド

load()メソッドは、選択した要素から呼び出す唯一のjQuery Ajaxメソッドである。

load()メソッドはサーバーからデータを読み込んだ後、読み込んだHTMLコードを選択した要素に表示する。
また、セレクターをURLアドレスと一緒に送信すると、読み込んだHTMLコードの中でセレクターに一致する要素だけを配置する。

形式

.load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)] )
  • url: リクエストURL。
  • data: リクエストと一緒にサーバーへ送るstringまたはmap。
  • complete(responseText, textStatus, XMLHttpRequest): リクエスト完了時に実行されるcallback関数。

次の例は、.load()メソッドのさまざまな形式を示す簡単な例である。

// Html Contentをロード
$('#result').load('ajax/test.html');  
  
// Html Contentをロードした後にメッセージ
$('#result').load('ajax/test.html', function() {  
  alert('Load was performed.');  
});  
  
// Html Contentの#container Targetをロード
$('#result').load('ajax/test.html #container');  
  
// array parameterを渡してHtml Contentをロード
$("#objectID").load("test.asp", { 'choices[]': ["Jon", "Susan"] } );  

次の例は、.load()メソッドの動作を示す簡単な例である。

$(function() {
    $("#btnRequest").on("click", function() {
        // URLアドレスに存在するHTMLコードから<li>要素を読み込み、idが"list"である要素に配置する。
        $("#list").load("/examples.html li");
    });
});

参照