「Mixi アプリ データの永続化」の版間の差分
ナビゲーションに移動
検索に移動
| 1行目: | 1行目: | ||
| − | ==mixi アプリ データの永続化== | + | ==[[mixi アプリ データの永続化]]== |
[[mixi アプリ]] | | [[mixi アプリ]] | | ||
===データ永続化のサンプル=== | ===データ永続化のサンプル=== | ||
| 27行目: | 27行目: | ||
<Module> | <Module> | ||
<ModulePrefs title="parsistance date sample"> | <ModulePrefs title="parsistance date sample"> | ||
| − | < | + | <[[R]]equire feature="opensocial-0.8"/> |
</ModulePrefs> | </ModulePrefs> | ||
<Content type="html"> | <Content type="html"> | ||
| 34行目: | 34行目: | ||
var key1 = "key_memo"; | var key1 = "key_memo"; | ||
// 永続データ読み込み要求 | // 永続データ読み込み要求 | ||
| − | function | + | function load[[R]]equest() { |
| − | var req = opensocial. | + | var req = opensocial.newData[[R]]equest(); |
| − | req.add(req.newFetchPersonRequest("VIEWER"), " | + | req.add(req.newFetchPersonRequest("VIEWER"), "[[vi]]ewer"); |
var fields = [key1]; | var fields = [key1]; | ||
| − | req.add(req.newFetchPersonAppDataRequest("VIEWER", fields), " | + | req.add(req.newFetchPersonAppDataRequest("VIEWER", fields), "[[vi]]ewer_data"); |
| − | req.send( | + | req.send(load[[R]]esponse); |
} | } | ||
// 永続データ読み込み応答 | // 永続データ読み込み応答 | ||
| − | function | + | function load[[R]]esponse(data) { |
| − | var | + | var [[vi]]ewer = data.get("[[vi]]ewer").getData(); |
| − | var | + | var [[vi]]ewer_data = data.get("[[vi]]ewer_data"); |
| − | if ( | + | if ([[vi]]ewer_data.hadError()) { |
| − | document.getElementById("message"). | + | document.getElementById("message").inner[[HTML]] = data.getErrorMessage(); |
return; | return; | ||
} | } | ||
| 56行目: | 56行目: | ||
} | } | ||
// 永続データ保存要求 | // 永続データ保存要求 | ||
| − | function | + | function regist[[R]]equest() { |
| − | var req = opensocial. | + | var req = opensocial.newData[[R]]equest(); |
var txtMemo = document.getElementById("memo"); | var txtMemo = document.getElementById("memo"); | ||
txtMemo.disabled = true; | txtMemo.disabled = true; | ||
| − | req.add(req.newUpdatePersonAppDataRequest(" | + | req.add(req.newUpdatePersonAppDataRequest("V[[IE]]WER", key1, txtMemo.value)); |
| − | req.send( | + | req.send(regist[[R]]esponse); |
} | } | ||
// 永続データ保存応答 | // 永続データ保存応答 | ||
| − | function | + | function regist[[R]]esponse(data) { |
if (data.hadError()) { | if (data.hadError()) { | ||
| − | document.getElementById("message"). | + | document.getElementById("message").inner[[HTML]] = data.getErrorMessage(); |
return; | return; | ||
} | } | ||
| − | + | load[[R]]equest(); | |
} | } | ||
// 永続データ削除要求 | // 永続データ削除要求 | ||
| − | function | + | function remove[[R]]equest() { |
| − | var req = opensocial. | + | var req = opensocial.newData[[R]]equest(); |
| − | req.add(req.newFetchPersonRequest("VIEWER"), " | + | req.add(req.newFetchPersonRequest("VIEWER"), "[[vi]]ewer"); |
var fields = [key1]; | var fields = [key1]; | ||
| − | req.add(req.newRemovePersonAppDataRequest("VIEWER", fields), " | + | req.add(req.newRemovePersonAppDataRequest("VIEWER", fields), "[[vi]]ewer_data"); |
| − | req.send( | + | req.send(load[[R]]esponse); |
} | } | ||
| − | gadgets.util.registerOnLoadHandler( | + | gadgets.util.registerOnLoadHandler(load[[R]]equest); |
</script> | </script> | ||
<p style="text-weight:bold;">Memo</p> | <p style="text-weight:bold;">Memo</p> | ||
| 85行目: | 85行目: | ||
</textarea> | </textarea> | ||
<div id="message"/> | <div id="message"/> | ||
| − | <input type="button" id="regist" value="登録" onclick="javascript: | + | <input type="button" id="regist" value="登録" onclick="javascript:regist[[R]]equest();"/> |
| − | <input type="button" id="remove" value="削除" onclick="javascript: | + | <input type="button" id="remove" value="削除" onclick="javascript:remove[[R]]equest();"/> |
]]> | ]]> | ||
</Content> | </Content> | ||
</Module> | </Module> | ||
2020年2月16日 (日) 04:29時点における最新版
mixi アプリ データの永続化
mixi アプリ |
データ永続化のサンプル
- 登録ボタンで閲覧者に紐つけしたデータを永続化
- 削除ボタンで永続データをクリア
ソース
重要API
| API | 概要 |
|---|---|
| newFetchPersonAppDataRequest | 指定した個人のアプリケーション データを要求するアイテムを作成。Map< PersonId, Map<String,Object>> を返します。返されるデータの値はすべて、JSON |
| newUpdatePersonAppDataRequest | 指定した個人のアプリケーション フィールドを更新するように要求するアイテムを作成。処理時にデータは返さない |
| newRemovePersonAppDataRequest | 指定した個人のデータストアから指定したキーを削除。処理時にデータは返さない |
| 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>
© 2006 矢木浩人
