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

MyMemoWiki

Mixi アプリ データの永続化

提供: MyMemoWiki
2020年2月15日 (土) 07:34時点におけるPiroto (トーク | 投稿記録)による版 (ページの作成:「==mixi アプリ データの永続化== [mixi アプリ] ===データ永続化のサンプル=== File:0797_mixi_app_parsist_dat.jpg *登録ボタンで閲覧者…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

mixi アプリ データの永続化

[mixi アプリ]

データ永続化のサンプル

0797 mixi app parsist dat.jpg

  • 登録ボタンで閲覧者に紐つけしたデータを永続化
  • 削除ボタンで永続データをクリア

ソース

重要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>

Memo

        <textarea id="memo" rows="3" cols="20">
        </textarea>
        <input type="button" id="regist" value="登録" onclick="javascript:registRequest();"/>
        <input type="button" id="remove" value="削除" onclick="javascript:removeRequest();"/>
     ]]>
  </Content> 
</Module>