RCIE-ジャンクのコード屋

主に自分のためにコーディングのTIPSを蓄積しています。

(JavaScript) URLを指定して、データを取得する

作ったもの

 Web ページからデータを取得してページを書き換えたり、よその URL にデータを投稿するときには、 XMLHttpRequest を使いますが、毎回タイプするのは大変なので、関数にまとめました。

コード

<script>
// httpサーバーに対してPOSTする。
function httpPost(url, param){
	let xhr = new XMLHttpRequest();
	xhr.open("POST", url);
	xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded;charset=UTF-8");
	if(callback != void 0){
		xhr.onload = function(){ callback(xhr.responseText) }
	}
	xhr.send(param);
}
// httpサーバーに対してGETする。
function httpGet(url, callback){
	let xhr = new XMLHttpRequest();
	xhr.open("GET", url);
	xhr.onload = function(){ callback(xhr.responseText); };
	xhr.send(null);
}
</script>

使用例

<script>
function onButtonClick(){
	// テキストエリアの内容を取得する
	let textarea001 = document.getElementById("textarea001").value;
	// google transliterate のサービスにアクセスする URL
	let url = "https://www.google.com/transliterate?langpair=ja-Hira|ja&text=" + textarea001;
	// 取得が完了したら callbackGet が呼ばれる
	httpGet(url, callbackGet);
}
function callbackGet(text){ // text に取得したデータが入っている
	// span001 の要素を text に書き換える
	document.getElementById("span001").innerHTML = text;
}
</script>
<textarea id="textarea001">はてなぶろぐ</textarea>
<button type="button" onclick="onButtonClick();">外部サービスを使って変換!</button>
<span id="span001"></span>

実行例




補足

 外部サイトからデータを GET できれば、住所→郵便番号 API にアクセスするなど、応用ができます。外部サイトにデータを POST できれば、掲示板に投稿したり、 Google Apps Script にデータを蓄積して、データベースとして使用することができます。