Page created:
Jun 17, 2009 (? ago)
Last modified ? ago
To main page | Opera Unite HowTo's

JSON State (storing data)


See Uniteness for better way to JSON.
Saving arbitrary object as JSON to achieve persistence:

index.html file:
<script src="file_wrap.js"></script>
<script src="json.js"></script>
<script>

var state_filename = 'state.json';  
/* will become "/storage/state.json" */

// Load the state 
var state = JSON.parse( safe_file_get(state_filename, '[]') ); 
/* [] is default value is file is not found or smth bad happened*/
// so, basically we start with empty list

window.onload = function () {
    webserver = opera.io.webserver
    if (webserver)    {
        webserver.addEventListener('_index', start_page, false);
    };
};

function start_page(r) {
	// Append a number to end of list
    state.push( state.length );

    var o = r.connection.response;
	o.write('Current state: ' + state);

	// Save the state
	safe_file_put(state_filename, JSON.stringify(state) );

	o.close();
	
};
</script>
This is suboptimal, due to the fact that state is saved with each request, but so far I haven't found a way to do onUnload.

Don't forget to enable fileio library in config.xml.

In Uniteness

var db = new JSON_FILE('state_prices.json', []);
db.store.push({foo:"bar"})  // CREATE first(0) object
db.save()

Slava V. [about me]


main page



Last updated


  1. Markuper (HTML templates)
  2. .ua
  3. Opera Unite HowTo's
  4. .us (files)
  5. Distribute Your Application
  6. 24/7 sites (permanent applications - idea) [stub]
  7. Issues
  8. HTTP Connections (AJAX/REST)
  9. Cookies
  10. file_wrap.js - File Wrapper
  11. Basic HowTo: Simple app (tutorial)
  12. Static images, client-side scripts
  13. Application Examples
  14. How to Debug Opera Unite apps
  15. Persistence & databases
  16. Opera Unite benchmark
  17. From PHP to Opera Unite
  18. Uniteness (Framework)
  19. Config.xml
  20. Key-value storage
  21. Widget Object
  22. Notifications (Growl'esque)
  23. Reset (debug)
  24. Cron example
  25. What I meant by CNAMEs
  26. Wish List
  27. Device Unavailable
  28. StopLorem (Opera Unite blogging)
  29. uniteness-0.11
  30. GET/POST data
  31. CRUD And Static (example)
  32. Opera object
  33. URLs
  34. Headers & Redirects
  35. Error Console
  36. JSON State (storing data)
  37. Security
  38. /storage/ (in fileio)
  39. Yusef library
  40. unite_info (a-la php_info)
  41. Javascript Imports
  42. onunload / _close
  43. fileio: Sandboxed Filesystem
  44. Request Hierarchy (like php_info)
  45. Intro: Web Apps with Opera Unite