jQuery_ファイル読み込み
ファイル読み込み
jQueryでは、セレクタ(操作したい要素)を指定して、当該箇所に読み込んだファイル内容を出力します。
以下では、下記HTMLの「id=contents」にテキスト内容を出力します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="jquery.js"></script>
<script src="main.js"></script>
</head>
<body>
<div id="contents"></div>
</body>
</html>
load()
load()関数は、指定したセレクタに読み込んだファイル内容を出力します。
第二引数に読み込み完了時に実行されるコールバックを指定できますが、細かい操作をする場合にはget()などを用いることが一般的です。
$(function(){
$("#contents").load("text.txt");
});
get()
読み込み完了時コールバック
get()関数の第二引数には、読み込みが完了した時に呼ばれるコールバックを指定します。
function callBack(data) {
$("#contents").text(data);
}
$(function() {
$.get("text.txt", callBack);
});
エラーハンドリング
get()関数では、doneやfailのコールバックを指定できます。
ファイル読み込みエラーなどの処理を記述することが可能です。
$(function() {
$.get("text.txt")
.done(function(data, status, jqxhr){
// 成功の場合処理
$("#contents").append("<p>" + data + "</p>");
$("#contents").append("<p>" + status + "</p>");
console.log(jqxhr)
}).fail(function(jqxhr, status, error){
// エラー時の処理
$("#contents").append("<p>" + status + "</p>");
$("#contents").append("<p>" + error + "</p>");
console.log(jqxhr)
});
});
post()
post()関数は、ローカルファイルを読み込む場合にはget()と同じです。
get()とpost()は、URL指定してGE/POSTメソッドを利用する場合に機能差がでます。
$(function() {
function doneCallBack(data, status, xhr) {
$("#contents").append("<p>" + data + "</p>");
$("#contents").append("<p>" + status + "</p>");
console.log(xhr)
}
function failCallBack(jqxhr, status, error) {
$("#contents").append("<p>" + jqxhr + "</p>");
$("#contents").append("<p>" + status + "</p>");
$("#contents").append("<p>" + error + "</p>");
console.log(jqxhr)
}
$(function() {
$.post("text.txt")
.done(doneCallBack)
.fail(failCallBack);
});
});
ajax()
$.ajax() はurlを非同期に読み込みます。
基本的にはローカルファイルの読み込みではなく、主にサーバに対して要求を投げる場合に用いる関数です。
成功時にはdone()、失敗時にはfail()を実行します。
alwaysは例外処理におけるfinallyと同じであり、ファイル読み込みが完了したら必ず実行されます。
$.ajax({
url: "text.txt"
}).done(function(data, status, xhr) {
// 通信成功時の処理
$("#contents").append("<p>" + status + "</p>");
$("#contents").append("<p>" + data + "</p>");
console.log(xhr)
}).fail(function(xhr, status, error) {
// 通信失敗時の処理
$("#contents").append("<p>" + status + "</p>");
$("#contents").append("<p>" + error + "</p>");
console.log(xhr)
}).always(function(arg1, status, arg2) {
// 通信完了時の処理
$("#contents").append("<p>" + status + "</p>");
$("#contents").append("<p>" + arg1 + "</p>");
console.log(arg2)
});
getJSON()
JSONファイルを読み込む専用関数が用意されています。
ただし、注意点としてはJSONファイルにシンタックスエラーがあったら何ら表示もなく失敗します。
$(function() {
$.getJSON("sample.json", function(data) {
// 取得したJSONデータを配列に格納する。
var items = [];
$.each(data, function(key, val) {
items.push("<li id='" + key + "'>" + val + "</li>");
});
//
$("<ul/>",{
html: items.join("")
}).appendTo( "body" );
});
});
エラーハンドリング
jQuery1.6以降であれば、done()、fail()、always()が適用可能です。
$.getJSON("sample.json")
.done(function(json) {
console.log("成功");
})
.fail(function(jqXHR, textStatus, errorThrown) {
console.log("エラー:" + textStatus);
console.log("テキスト:" + jqXHR.responseText);
})
.always(function() {
console.log("完了");
});