.load()

.load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)] ) Returns: jQuery

説明: サーバからデータをロードし、読込んだHTMLをマッチした要素に配置します。

  • version added: 1.0 .load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)] )

    urlリクエストを送信するURLを含む文字列。

    dataリクエストと一緒にサーバへ送信するマップや文字列を指定します。

    complete(responseText, textStatus, XMLHttpRequest)リクエストが完了したときに実行されるコールバック関数。

このメソッドは、サーバからデータを取得する最も簡単な方法です。これは、$とほぼ同等です。それは方法ではなくグローバル関数であり、それは暗黙のコールバック関数を持っていることを除いて(URL、データ、成功)を取得します。 メソッドではなくグローバル関数であることと、暗黙のコールバック関数を持っていることを除けば、 $.get(url, data, success) とほぼ同じです。 レスポンスの成功が検出された(すなわち textStatus が "success" または "notmodified" )場合、 .load() は、マッチした要素のHTMLコンテンツへ返されたデータを設定します。 次は、メソッドの使用方法が非常に簡単であることを示しています

$('#result').load('ajax/test.html');

指定のコールバックがあれば、後処理が実行された後に実行されます:

$('#result').load('ajax/test.html', function() {
  alert('Load was performed.');
});

上記2つの例で、ドキュメントに ID が "result" である要素がなければ、.load() メソッドは実行されません。

データがオブジェクトの場合は POSTメソッドが使用され、それ以外の場合は GET が使用されます。

注:イベント処理スイートにも、.load() と言うメソッドがあります。 どちらが実行されるかは、渡された引数のセットに依存します。

ページをロードするフラグメント

.load() メソッドは、$.get() とは異り、 挿入するリモートドキュメントの一部を指定することができます。 これは、urlurl に対する特殊な構文で実現します。1つ以上のスペースが文字列に含まれ場合、 最初のスペースに続く文字列の一部は、ロードするコンテンツを決定するjQueryのセレクタであると見なされます。

取って来たドキュメントの一部のみを使用するため、上記の例を次のように変更することができます:

$('#result').load('ajax/test.html #container');

このメソッドが実行されると、ajax/test.htmlのコンテンツを取得しますが、次に、 jQuery は container という ID を持つ要素を検索するために返されたドキュメントをパースします。 要素は、そのコンテンツと一緒に、result という ID を持つ要素に挿入され、取得ドキュメントの残りの部分は破棄されます。

クjQuery は、取得したドキュメントをパースし、現在のドキュメントへ挿入するため、ブラウザの .innerHTML プロパティを使用します。このプロセス中に、ブラウザは、しばしばドキュメントから <html><title><head> のような要素をフィルタリングします。 その結果、ドキュメントがブラウザから直接取出された場合と、.load() によって取出された要素は完全に同じではありません。

注: 接尾辞セレクタ表現(suffixed selector expression)を使用しない URL で .load() を呼出す場合、スクリプトは、コンテンツを削除する前に .html() へ渡します。 これは、それらが廃棄される前に、スクリプト・ブロックを実行します。 しかしながら、.load() が、URLにセレクタ表現を追加して呼出される場合、 スクリプトは、DOM が更新される前に取出されるので、実行されません。 両方の場合の例を下に示します:

こちらは、JavaScriptが正常に実行された場合、ドキュメントの一部として #a の中にロードされます。

$('#a').load('article.html');

しかし、この場合は、 #b にロードされるドキュメント内のスクリプトブロックは、実行前に取出されます:

$('#b').load('article.html #target');

補注:

  • ブラウザのセキュリティ制限のため、ほとんどの "Ajax"のリクエストは同一生成元ポリシ(same origin policy)に従います ; リクエストは、 別のドメイン、サブドメイン、またはプロトコルからデータを取得することはできません。

例:

例:順序付きリストに、メインページのフッターナビゲーションをロードします。

<!DOCTYPE html>
<html>
<head>
  <style>
 body{ font-size: 12px; font-family: Arial; }
 </style>
  <script src="/files/jquery.js"></script>
</head>
<body>
<b>Footer navigation:</b>
<ol id="new-nav"></ol>
<script>
  $("#new-nav").load("/ #jq-footerNavigation li");
</script>
</body>
</html>

デモ:

例:Ajaxリクエストがエラーを検出した場合に注意を表示します。

<!DOCTYPE html>
<html>
<head>
  <style>
  body{ font-size: 12px; font-family: Arial; }
  </style>
  <script src="/files/jquery.js"></script>
</head>
<body>
<b>Successful Response (should be blank):</b>
<div id="success"></div>
<b>Error Response:</b>
<div id="error"></div>
<script>
$("#success").load("/not-here.php", function(response, status, xhr) {
  if (status == "error") {
    var msg = "Sorry but there was an error: ";
    $("#error").html(msg + xhr.status + " " + xhr.statusText);
  }
});
  </script>
</body>
</html>

デモ:

例:ID が feeds である div 要素に feeds.html ファイルをロードします。

$("#feeds").load("feeds.html");

Result:

<div id="feeds"><b>45</b> feeds found.</div>

例:サーバへデータの配列を渡します。

$("#objectID").load("test.php", { 'choices[]': ["Jon", "Susan"] } );

例:上記と同じですが、追加パラメータとサーバが応答を完了したときに実行される コールバック関数をサーバへPOST通信します。

$("#feeds").load("feeds.php", {limit: 25}, function(){
alert("The last 25 entries in the feed have been loaded");
});