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;