| ページ一覧 | ブログ | 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 を元に戻す
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <Module>
  3. <ModulePrefs title="parsistance date sample">
  4. <Require feature="opensocial-0.8"/>
  5. </ModulePrefs>
  6. <Content type="html">
  7. <![CDATA[
  8. <script type="text/javascript">
  9. var key1 = "key_memo";
  10. // 永続データ読み込み要求
  11. function loadRequest() {
  12. var req = opensocial.newDataRequest();
  13. req.add(req.newFetchPersonRequest("VIEWER"), "viewer");
  14. var fields = [key1];
  15. req.add(req.newFetchPersonAppDataRequest("VIEWER", fields), "viewer_data");
  16. req.send(loadResponse);
  17. }
  18. // 永続データ読み込み応答
  19. function loadResponse(data) {
  20. var viewer = data.get("viewer").getData();
  21. var viewer_data = data.get("viewer_data");
  22. if (viewer_data.hadError()) {
  23. document.getElementById("message").innerHTML = data.getErrorMessage();
  24. return;
  25. }
  26. var dataAry = viewer_data.getData()[viewer.getId()];
  27. var memo = (dataAry==null)?"":dataAry[key1];
  28. var txtMemo = document.getElementById("memo");
  29. txtMemo.value = gadgets.util.unescapeString(memo);
  30. txtMemo.disabled = false;
  31. }
  32. // 永続データ保存要求
  33. function registRequest() {
  34. var req = opensocial.newDataRequest();
  35. var txtMemo = document.getElementById("memo");
  36. txtMemo.disabled = true;
  37. req.add(req.newUpdatePersonAppDataRequest("VIEWER", key1, txtMemo.value));
  38. req.send(registResponse);
  39. }
  40. // 永続データ保存応答
  41. function registResponse(data) {
  42. if (data.hadError()) {
  43. document.getElementById("message").innerHTML = data.getErrorMessage();
  44. return;
  45. }
  46. loadRequest();
  47. }
  48. // 永続データ削除要求
  49. function removeRequest() {
  50. var req = opensocial.newDataRequest();
  51. req.add(req.newFetchPersonRequest("VIEWER"), "viewer");
  52. var fields = [key1];
  53. req.add(req.newRemovePersonAppDataRequest("VIEWER", fields), "viewer_data");
  54. req.send(loadResponse);
  55. }
  56. gadgets.util.registerOnLoadHandler(loadRequest);
  57. </script>

Memo

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