万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

JavaScriptでなんちゃってGET

http://www.s-memo.net/blog/2007/03/javascriptget_1.php

オライリーJavaScript 5版の使い方わからないコード

写経したので載せる
・jsquoter.php

<?php
header("Content-Type: text/javascript");
// URLから引数を取り出す。
$func = $_GET["func"]; // このjsコードから呼び出す関数、。
$filename = $_GET["url"]; // funcに渡すファイルやURL。
$lines = file($filename); // ファイルの内容を取り出す
$text = implode("", $lines); // 文字列に連結する
// 引用符や改行をエスケープする。
$escaped = str_replace(array("'", "\"", "\n", "\r"),
                       array("\\'", "\\\"", "\\n", "\\r"),
                       $text);
// すべての内容をJavaScript関数呼び出し形式で出力する。
echo $func('$escaped');
?>

・このJSコードはファイル?

HTTP.getTextWithScript = function(url, callback) {
	// 新たにscript要素を生成し、ドキュメントに追加する・
	var script = document.createElement("script");
	document.body.appendChild(script);
	
	// 一意な変数名を作成する
	var funcname = "func" + HTTP.getTextWithScript.counter++;
	
	// この名前で関数を定義し、この関数を便利な名前空間として利用する。
	// サーバ側で生成するスクリプトがこの関数を呼び出す。
	HTTP.getTextWithScript[funcname] = function(text) {
		// テキストをコールバック関数に渡す
		callback(text);
		
		// スクリプトタグと生成された関数を削除する。
		document.body.removeChild(script);
		delete HTTP.getTextWithScript[funcname];
	}
	
	// 読み出したいURLと関数名をエンコードして、jpquoter.phpサーバサイド
	// スクリプトに対する引数にする。スクリプトタグのsrcプロパティを
	// 変更して、このURLを読み出す。
	script.src = "jsquoter.php" +
				"?url=" + encodeURIComponent(url) + "&func=" +
				encodeURIComponen("HTTP.getTextWithScript." +  funcname);
}

// 同時に複数のリクエストを送信できるようにするため、この変数を使って、
一意なコールバック関数名を生成する。
HTTP.getTextWithScript.counter = 0;