jQueryのload()を使えば、他のページからテキストなどを引っ張ってくることができます。
今回はコンテンツを引っ張ってくる方法、エラーの対処法や注意点などをお伝えします。
基本的な使い方
他のページからコンテンツを取得し、表示させます。
構文
jQuery
1 |
$('div').load('/page/ .post-content'); |
load()の引数に取得対象ページのURLと、取得したいコンテンツがあるclassを半角スペースを空けて指定しています。
それをセレクタで指定した要素に表示させます。
これだけで他のページよりコンテンツを引っ張ってくることができます。
ちなみにURLだけを指定するとそのページ全てが取得され、classの箇所はIDや要素名も指定できます。
HTML
1 2 3 |
<div> </div> |
jQuery
1 2 3 4 5 6 |
$(function() { // コンテンツを引っ張ってくる $('div').load('/immunity .post-content'); }); |
結果
当サイトの免責事項のページから、要素を引っ張って表示させました。
以下のように取得しています。
$( 取得したコンテンツを表示させる要素 ).load(‘取得するURL 取得するclass’);
サイトのヘッダーやフッターなどの共通項目をインクルードして使うなど、簡単に効率UPできます。
注意事項
load()
で取得する際、以下の点にご注意ください。
- 別のドメイン、サブドメイン、ポート、プロトコルからは取得できない。
- 通常は
GET
メソッドで通信されるが、配列やオブジェクトはPOST
メソッドになる。
Ajaxと同様、セキュリティ上、他のドメインからは取得できません。
さまざまな使い方
コールバックでエラー表示
コールバックを使って、取得できなかったらエラーメッセージを表示させてみましょう。
HTML
1 2 3 |
<div> </div> |
jQuery
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$(function() { // コンテンツを取得する際、ステータスも取得する $('div').load('/hogehoge/', function(response, status, xhr) { // もしステータスがエラーだったら if (status == 'error') { // エラーメッセージを変数に格納 var msg = '申し訳ありませんが、エラーであります: '; // 取得したエラーコードとエラーテキストを表示させる $('div').append(msg+xhr.status+'-'+xhr.statusText); } }); }); |
結果
わざと存在しないURLを指定したので、エラーメッセージが表示されるはずです。
通信状態のステータスも取得するためちょっと複雑ですが、以下のように動作しています。
1.ステータスも取得する
$(‘div’).load(‘/hogehoge/’, function(response, status, xhr) {
特定のURLのあとにfunction(response, status, xhr)
と続いていますが、実際に取得したデータや通信状態を取得しています。
response
…取得したデータ(HTMLであればHTMLソース)status
…通信状態xhr
…レスポンスデータ(XMLHttpRequest・404やタイムアウトなどの通信状態も含めて取得)
2.ステータスがエラーだったら実行
if (status == ‘error’) {
上記2.のstatus
がerror
だったらエラーメッセージを表示させます。
status
は以下の5種類が返されます。
success
…成功error
…失敗notmodified
…更新されていないtimeout
…タイムアウトparsererror
…パーサーエラー(構文エラー)
1、2はよく使うかと思います。
パーサーエラーは;
(セミコロン)が抜けてたり}
(カッコ)の閉じ忘れなどの構文エラーです。
3.取得したhttpステータスコードを表示させる
$(‘div’).append(msg+xhr.status+’-‘+xhr.statusText);
上記で取得したxhr
の中から以下のように特定のデータを取得しappend()
で<div>
要素に出力しています。
xhr.status
…200や404、500などのhttpステータスコードxhr.statusText
…Not FoundやForbiddenなどのステータステキスト
xhr
はオブジェクト形式なので、status
やstatusText
といったプロパティを取得するためには、以下のようにオブジェクト名とプロパティ名を.
(ドット)で繋ぐだけです。
オブジェクト名 . プロパティ名
jQueryを読み込む際のloadイベントについて
今回ご紹介しているload()
メソッドとは別に、読み込みのタイミングに関するload
イベントがありますが、別物です。
以下の記事でご紹介していますので、ご確認ください。
参考:jQueryのready()やload()のタイミングの違い