TOTAL ACCESS 無料カウンター  UNIQUE ACCESS 無料カウンター

2008年9月1日月曜日

jQueryプラグイン::jquery.ajaxslt.jsの紹介

シリーズ「WEBサイトの構造を考える」にしようかと思いましたが、今回は自作のプラグインの紹介及び「教えてエロい人!」的な内容なのでシリーズからはずしました。
さて、今回紹介するのは僕がぼちぼち作ってきたjQueryのプラグイン、jquery.ajaxslt.jsです。「もうすでに同じ機能のプラグインが***によって公開されてるよ?」とかあったとしてもそういうツッコミは無しです。この手のプラグインは乱立とかビビッてたら何も出来ないのでねー

あ、そうそう、とりあえず一言。

「jQuery本家サイトのデザインが変わりすぎててワロタwwwww」

Be a Javascript ROCK STARってなんやねんwwwww
あまりにも変わりすぎてて一瞬フィッシングサイトかと思ってしまったじゃないか・・・
それはさておき、プラグインの紹介紹介っと。

このプラグインの機能は
「XMLとXSLをAjax的に取得し、XSLTを適応してHTMLへ埋め込む」
という一連の動作を非常に容易にするというものです。なんか2005年くらいにググル先生がajaxsltパッケージみたいなの作ってたような気もするんですが、気にしない気にしない。

今のところ下記のようなインターフェースで構築しています。

$(#~).ajaxslt({
 xml : {
  doc : xmlDocument,
  method : methodType,
  data : requestData
 },
 xsl : {
  doc : xslDocument,
  method : methodType,
  data : requestData
 },
 option : {
  asynchronous : asynchronousFlag,
  onSuccess : onSuccessFunction,
  onFailure : onFailureFunction,
  onComplete : onCompleteFunction
 }
});

また、ドキュメントを前もって取得し、ストックする関数も用意しました
xmlDocument or Msxml2.FreeThreadedDOMDocument = jQuery.ajaxslt.stock({
 doctype : documentType,
 URL : documentURL,
 method : methodType,
 data : requiestData,
 asynchronous : asynchronousFlag
});

prototype.jsなどのパクリインターフェースなんですが、何がエレガントで何がダサいのか分からなくなってきたので、「これでいいのかな???」という状態です。
一応このまま上記仕様の説明をすると

■ $(#~).ajaxslt()

x[ms]lDocumentDocumentURL, XMLDocument通常はドキュメントのロード先URLを記述します。
ただし、ここでjQuery.ajaxslt.Stock()で生成したXMLDocumentをここで指定するとロードは行われずにメモリにストックされているドキュメントが適応されます。XSLファイルの使いまわしをする際はいちいちロードせずにストックしたドキュメントを使用するほうがよいでしょう。
methodType
get, post (default:get)
リクエストのタイプ
requestData
任意の文字列
GETパラメータまたはPOST時の送信データをセットします
asynchronousFlag
true, false (default:true)
非同期/同期のフラグ
on***
function
それぞれの状況で実行される関数を指定

■ jQuery.ajaxslt.stock()
documentType
xml, xsl
ロードするドキュメントのタイプ
documentURL
Document URL
ドキュメントのURL
methodType
get, post (default:get)
リクエストのタイプ
requestData
任意の文字列
GETパラメータまたはPOST時の送信データをセットします
asynchronousFlagtrue, false (default:false)
非同期/同期のフラグ

こんな感じです。まぁありがちな仕様なのですが、今行き詰っている点は
  • インターフェースってこれでいいのか?
  • IEでXSLをPOSTで取得する方法がわからない
という2点です。XMLのGET,POST, XSLのGETだけのサポートならIE,FF,Opera,Safariで動作確認取れてるのですがねー

上記2点、教えてエロい人!