XMLHttpRequestで画像を読み込む
Ajaxで一部のWebデータを読み込む時、XMLHttpRequestを使いますが、テキストデータが主に読み込みの対象となっているので今回は画像データを読み込みたいと思います。
読み込み方はテキストと同じで、 読み込んだ画層データをBlobかArrayBufferとして処理するだけでOKです。
Blobによる読み込み
- <!--doctype html-->
- <meta charset="UTF-8">
- <title>XMLHttpRequest</title>
- <div id="base">
- <h1>XMLHttpRequest</h1>
- <form>
- <input id="btn" type="button" value="read">
- </form>
- <div id="res"></div>
- </div>
- <script>
- //XMKHttpRequestで画像読込
- document.addEventListener("DOMContentLoaded", function() {
- var btn = document. getElementById("btn");
- var res = document.getElementById("res");
- //ボタンクリックによりXMLHttpRequestで読込
- btn.addEventListener("click", function() {
- var xhr = new XMLHttpRequest();
- //読み込む画像ファイル
- var path = "ika1.png";
- xhr.open("GET", path, true);
- //タイプ指定を忘れずに
- xhr.responseType = "blob";
- xhr.onreadystatechange = function(e) {
- if(xhr.readyState == 4 && xhr.status == 200) {
- //var blob = e.target.response;
- var blob = xhr.response; //どちらも同じ
- res.innerHTML = '<img src="' + URL.createObjectURL(blob) + '" />';
- };
- };
- xhr.send(null);
- }, false);
- }, false);
- </script>
もう一つの例
- <!--doctype html-->
- <meta charset="UTF-8">
- <title>XMLHttpRequest</title>
- <div id="base">
- <h1>XMLHttpRequest</h1>
- <form>
- <input id="btn" type="button" value="read">
- </form>
- <div id="res"></div>
- </div>
- <script>
- //XMKHttpRequestで画像読込
- document.addEventListener("DOMContentLoaded", function() {
- var btn = document.getElementById("btn");
- var res = document.getElementById("res");
- //ボタンクリックによりXMLHttpRequestで読込
- btn.addEventListener("click", function() {
- var xhr = new XMLHttpRequest();
- //読み込む画像ファイル
- var path = "画像.png";
- xhr.open("GET", path, true);
- xhr.responseType = "blob";
- xhr.onreadystatechange = function(e) {
- if(xhr.readyState == 4 && xhr.status == 200) {
- //タイプを指定
- var blob = new Blob([xhr.response], {type: "image/png"});
- res.innerHTML = '<img src="' + URL.createObjectURL(blob) + '" />';
- };
- };
- xhr.send(null);
- }, false);
- }, false);
- </script>