| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
ページの作成:「==mixi アプリ データの永続化== [mixi アプリ] ===データ永続化のサンプル=== File:0797_mixi_app_parsist_dat.jpg *登録ボタンで閲覧者…」
==mixi アプリ データの永続化==
[mixi アプリ]
===データ永続化のサンプル===
[[File:0797_mixi_app_parsist_dat.jpg]]
*登録ボタンで閲覧者に紐つけしたデータを永続化
*削除ボタンで永続データをクリア
===ソース===
====重要API====
{|class="wikitable"
!API
!概要
|-
|[http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/#opensocial.DataRequest.newFetchPersonAppDataRequest newFetchPersonAppDataRequest]
|指定した個人のアプリケーション データを要求するアイテムを作成。Map< PersonId, Map<String,Object>> を返します。返されるデータの値はすべて、JSON
|-
|[http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/#opensocial.DataRequest.newUpdatePersonAppDataRequest newUpdatePersonAppDataRequest]
|指定した個人のアプリケーション フィールドを更新するように要求するアイテムを作成。処理時にデータは返さない
|-
|[http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/#opensocial.DataRequest.newRemovePersonAppDataRequest newRemovePersonAppDataRequest]
|指定した個人のデータストアから指定したキーを削除。処理時にデータは返さない
|-
|[http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/gadgets/#gadgets.util.unescapeString gadgets.util.unescapeString]
|escapeString を元に戻す
|-
|}
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="parsistance date sample">
<Require feature="opensocial-0.8"/>
</ModulePrefs>
<Content type="html">
<![CDATA[
<script type="text/javascript">
var key1 = "key_memo";
// 永続データ読み込み要求
function loadRequest() {
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest("VIEWER"), "viewer");
var fields = [key1];
req.add(req.newFetchPersonAppDataRequest("VIEWER", fields), "viewer_data");
req.send(loadResponse);
}
// 永続データ読み込み応答
function loadResponse(data) {
var viewer = data.get("viewer").getData();
var viewer_data = data.get("viewer_data");
if (viewer_data.hadError()) {
document.getElementById("message").innerHTML = data.getErrorMessage();
return;
}
var dataAry = viewer_data.getData()[viewer.getId()];
var memo = (dataAry==null)?"":dataAry[key1];
var txtMemo = document.getElementById("memo");
txtMemo.value = gadgets.util.unescapeString(memo);
txtMemo.disabled = false;
}
// 永続データ保存要求
function registRequest() {
var req = opensocial.newDataRequest();
var txtMemo = document.getElementById("memo");
txtMemo.disabled = true;
req.add(req.newUpdatePersonAppDataRequest("VIEWER", key1, txtMemo.value));
req.send(registResponse);
}
// 永続データ保存応答
function registResponse(data) {
if (data.hadError()) {
document.getElementById("message").innerHTML = data.getErrorMessage();
return;
}
loadRequest();
}
// 永続データ削除要求
function removeRequest() {
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest("VIEWER"), "viewer");
var fields = [key1];
req.add(req.newRemovePersonAppDataRequest("VIEWER", fields), "viewer_data");
req.send(loadResponse);
}
gadgets.util.registerOnLoadHandler(loadRequest);
</script>
<p style="text-weight:bold;">Memo</p>
<textarea id="memo" rows="3" cols="20">
</textarea>
<div id="message"/>
<input type="button" id="regist" value="登録" onclick="javascript:registRequest();"/>
<input type="button" id="remove" value="削除" onclick="javascript:removeRequest();"/>
]]>
</Content>
</Module>

案内メニュー