Hatena::ブログ(Diary)

TsutomuUchimaの日記 このページをアンテナに追加 RSSフィード

iPhoneでYouTubeの再生が遅い場合の対処はこちらから。

2011-02-23

教えてください。 教えてください。を含むブックマーク 教えてください。のブックマークコメント

こんなことやりたいです。

  • ドキュメント指向DBのデータとWebブラウザストレージのデータを同期させオンライン、オフラインで動作可能にする
  • Webブラウザのストレージで全文検索
  • 現時点のブラウザストレージの実装による違いを意識しないようプログラミングする。またはフレームワークを利用する

CouchDBやMongoDBとかドキュメント指向DBとWebブラウザのGoogle GearsHTML5 localstorageとの同期ってどんな風に実装するんでしょう?Webブラウザのストレージについて全くの無知です。HTML5の仕様はまだ決まってないし、でも現在の実装でもいいから使いたいなぁ。クロスブラウザなローカルストレージを扱うJavaScriptライブラリってありませんかね?

[] jquery.jsonengine.jsやめた。代わりにjquery.simplejsonrest.js 書き始めた  jquery.jsonengine.jsやめた。代わりにjquery.simplejsonrest.js 書き始めたを含むブックマーク  jquery.jsonengine.jsやめた。代わりにjquery.simplejsonrest.js 書き始めたのブックマークコメント

自分で作っといて何だけど jquery.jsonengine.js は使い物にならない!公開しないで良かった。その代わりを考えました。こんな感じで。

jquery.simplejsonrest.js

// Simple JSON-REST plugin for jQuery

//BASE

var _opt = {
	"type"    : "POST",
	"url"     : "/_je/myDoc",
	"data"    : {"foo":"bar"},
	"success" : function(){alert("success")},
	"error"   : function(){alert("error")}
};
$._OPTIONS(_opt)._AJAX();

//BASIC

var _data   = {"url":"/_je/myDoc","data":{"foo":"bar"}};
var _docId  = '_docId=00roxf3RwEBi1ZobhYECZdUnT766oU97';
var _filter = {"cond":"foo.eq.bar","sort":"foo.asc","limit":"100"};

$._OPTIONS(_data)._GET(_filter, success, error);
$._OPTIONS(_data)._POST(success, error);
$._OPTIONS(_data)._PUT(success, error);
$._OPTIONS(_data)._DELETE(success, error);

//USAGE

$('#aForm')._GET(_docId,  success, error);
$('#aForm')._POST(success, error);
$('#aForm')._PUT(success, error);
$('#aForm')._DELETE(success, error);

$('#aData')._OPTIONS(_data)._GET(_filter, success, error);

こんなソースなら使いたくなる。自画自賛。

[] jquery.simplejsonrest.js 最終案  jquery.simplejsonrest.js 最終案を含むブックマーク  jquery.simplejsonrest.js 最終案のブックマークコメント

// Simple JSON-REST plugin for jQuery

//low level

$.SJR.option = {
	"success" : function(response, status){alert('success');},
	"error"   : function(xhr, status, thrown){alert('error');}
};

$.SJR.option.type = 'POST';
$.SJR.option.url  = '/_je/myDoc';
$.SJR.option.data = '{"foo":"bar"}';

$.SJR.ajax();

//基本

option  = {
	"url"  : "/_je/myDoc",
	"data" : {"foo":"bar"} // or "foo=bar"
};
success = function(response, status){alert('success')};
error   = function(xhr, status, thrown){alert('error');};

$._GET (option, success, error);
$._POST(option, success, error);
$._PUT (option, success, error);
$._DELETE(option, success, error);

//jQuery的な使い方

//要素の内容を元に実行される。内容を走査する為のコーディングは不要。
$('form')._POST(success, error);
$('form')._PUT (success, error);
$('form')._DELETE(success, error);

//取得したデータを要素の内容に反映させる。基本的に内容を反映させるコーディングは不要。
id = '_docId=00roxf3RwEBi1ZobhYECZdUnT766oU97';
$('form')._GET(id, success, error);

//取得したデータを要素の内容に反映させるコーディング例。
//それぞれ違う要素だが同じ処理で反映させる事が出来る。
option.data = {"sort":"message.asc", "limit":"100"};
var success = function(response, status){
	this.empty();
	for (i = 0; i < response.length; i++) {
		var msg = $("<div/>").text(response[i].message);
		this.append(msg);
	}
};
$('#messages1')._GET(option, success, error);
$('#messages2')._GET(option, success, error);

最終案のソースを見てjqueryを知っている人ならピン!ときた人もいるかと思います。要はjquery.simplejsonrest.jsを使うとフォーム値に関してはリクエストするのに基本コーディングが無くなります。submit感覚で使えちゃうって事。