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

MyMemoWiki

「Mixi アプリ データの永続化」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
==mixi アプリ データの永続化==
+
==[[mixi アプリ データの永続化]]==
[[mixi アプリ]]
+
[[mixi アプリ]] |
 
===データ永続化のサンプル===
 
===データ永続化のサンプル===
 
[[File:0797_mixi_app_parsist_dat.jpg]]
 
[[File:0797_mixi_app_parsist_dat.jpg]]
27行目: 27行目:
 
  <Module>
 
  <Module>
 
   <ModulePrefs title="parsistance date sample">
 
   <ModulePrefs title="parsistance date sample">
     <Require feature="opensocial-0.8"/>
+
     <[[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 loadRequest() {
+
             function load[[R]]equest() {
                 var req = opensocial.newDataRequest();
+
                 var req = opensocial.newData[[R]]equest();
                 req.add(req.newFetchPersonRequest("VIEWER"), "viewer");
+
                 req.add(req.newFetchPersonRequest("VIEWER"), "[[vi]]ewer");
 
                 var fields = [key1];
 
                 var fields = [key1];
                 req.add(req.newFetchPersonAppDataRequest("VIEWER", fields), "viewer_data");
+
                 req.add(req.newFetchPersonAppDataRequest("VIEWER", fields), "[[vi]]ewer_data");
                 req.send(loadResponse);
+
                 req.send(load[[R]]esponse);
 
             }
 
             }
 
             // 永続データ読み込み応答
 
             // 永続データ読み込み応答
             function loadResponse(data) {
+
             function load[[R]]esponse(data) {
                 var viewer = data.get("viewer").getData();
+
                 var [[vi]]ewer = data.get("[[vi]]ewer").getData();
                 var viewer_data = data.get("viewer_data");
+
                 var [[vi]]ewer_data = data.get("[[vi]]ewer_data");
                 if (viewer_data.hadError()) {
+
                 if ([[vi]]ewer_data.hadError()) {
                     document.getElementById("message").innerHTML = data.getErrorMessage();
+
                     document.getElementById("message").inner[[HTML]] = data.getErrorMessage();
 
                     return;
 
                     return;
 
                 }
 
                 }
56行目: 56行目:
 
             }
 
             }
 
             // 永続データ保存要求
 
             // 永続データ保存要求
             function registRequest() {
+
             function regist[[R]]equest() {
                 var req = opensocial.newDataRequest();
+
                 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("VIEWER", key1, txtMemo.value));
+
                 req.add(req.newUpdatePersonAppDataRequest("V[[IE]]WER", key1, txtMemo.value));
                 req.send(registResponse);
+
                 req.send(regist[[R]]esponse);
 
             }
 
             }
 
             // 永続データ保存応答
 
             // 永続データ保存応答
             function registResponse(data) {
+
             function regist[[R]]esponse(data) {
 
                 if (data.hadError()) {
 
                 if (data.hadError()) {
                     document.getElementById("message").innerHTML = data.getErrorMessage();   
+
                     document.getElementById("message").inner[[HTML]] = data.getErrorMessage();   
 
                     return;
 
                     return;
 
                 }
 
                 }
                 loadRequest();
+
                 load[[R]]equest();
 
             }
 
             }
 
             // 永続データ削除要求
 
             // 永続データ削除要求
             function removeRequest() {
+
             function remove[[R]]equest() {
                 var req = opensocial.newDataRequest();
+
                 var req = opensocial.newData[[R]]equest();
                 req.add(req.newFetchPersonRequest("VIEWER"), "viewer");
+
                 req.add(req.newFetchPersonRequest("VIEWER"), "[[vi]]ewer");
 
                 var fields = [key1];
 
                 var fields = [key1];
                 req.add(req.newRemovePersonAppDataRequest("VIEWER", fields), "viewer_data");
+
                 req.add(req.newRemovePersonAppDataRequest("VIEWER", fields), "[[vi]]ewer_data");
                 req.send(loadResponse);
+
                 req.send(load[[R]]esponse);
 
             }
 
             }
             gadgets.util.registerOnLoadHandler(loadRequest);
+
             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:registRequest();"/>
+
         <input type="button" id="regist" value="登録" onclick="javascript:regist[[R]]equest();"/>
         <input type="button" id="remove" value="削除" onclick="javascript:removeRequest();"/>
+
         <input type="button" id="remove" value="削除" onclick="javascript:remove[[R]]equest();"/>
 
       ]]>
 
       ]]>
 
   </Content>  
 
   </Content>  
 
  </Module>
 
  </Module>

2020年2月16日 (日) 04:29時点における最新版

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