Seems you have two options: 1) Cache the AJAX calls 2) Hide the already retrieved data
It sounds like you are implementing an AJAX tree to me (since you mentioned folders...). Either way these ideas might help: Why not just wrap the children elements in a DIV and set the display style attribute to "none". Attach an exando ( You can assign random attributes to html elements via JS and refer to them at a later date i.e. someHtmlElement.myAttribute = someOtherValue ) attribute to the activating element to reference the containing hidden child. Then on your click handler, check the expando attribute for a non-null value, if it's not null, assume it's the child elements containing DIV and just show it. No id's needed =D The other way is to use an object as a hash with a key of sorts. If you are using a GET request for your HTML, then you can use the URL as the key. If you are using post, the post data (or a substring of the post if there is a variable part of it that might change between requests.) You then need to wrap your ajax request with another call that checks the cache for a value, if the value is found, activate your success call back function with a fake request object that fills out the responseText. -Andrew Martinez -----Original Message----- From: [email protected] [mailto:[EMAIL PROTECTED] Behalf Of Tobias Numiranta Sent: Wednesday, September 13, 2006 9:53 AM To: Ruby on Rails: Spinoffs Subject: [Rails-spinoffs] Re: client side caching for ajax. Hi again. this is how I solved it: -- helper code: # support for client side cached requests def include_cache_request_script %Q{<script> function cached_request(remote_func, update) { if($(update).innerHTML == "") { remote_func(); } else { Element.toggle(update); } } </script>} end def cached_link_to_remote(title, options) func = "cached_request(function() {#{remote_function(options)};}, '#{options[:update]}')" link_to_function title, func end -- view code: <%= include_cache_request_script %> ... ... <%= cached_link_to_remote title, :update => doc_id, :url => {:action => 'foo', :id => item_id } %> What do you think about it? Have a nice day, T Tobias Numiranta wrote: > Hi. new prototype rails user says: > > Is there any convenient way to cache results on the client-side? I have > some code with a file browser, where expanding a folder performs a > ajax-call. It would be nice, when collapsing the tree to store the > expanded result somehow. > > So that the result from calling something like this, > > <%= link_to_remote anode.title, :update => "node_li#{anode.id}", > :url => {:action => "atree", :id => anode.id} %> > > can be reused without a http-request the second time. > > Have a nice day, > T --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs -~----------~----~----~----~------~----~------~--~---
