Hello, Using I am using the Ajax.PeriodicalUpdater, and it is working great. How do I test to see if the content has changed from the last request? Thanks, Terry riegel --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Christophe Porteneuve
2007-Jun-09 20:43 UTC
Re: Checking for changes with Ajax.PeriodicalUpdater
Hey, Terry Riegel a écrit :> Using I am using the Ajax.PeriodicalUpdater, and it is working great. > How do I test to see if the content has changed from the last request?Well, why do you need to? At any rate, it''s a simple matter of saving the last responseText and comparing it to the new one. It does keep it in its lastText property, btw. -- Christophe Porteneuve a.k.a. TDD "[They] did not know it was impossible, so they did it." --Mark Twain Email: tdd-x+CfDp/qHev2eFz/2MeuCQ@public.gmane.org --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Ajax.PeriodicalUpdater does not extend from Ajax.Updater, so it does not support the evalJSON, and other methods, is that correct? So you are limited in someways, with respect to Ajax.Request Feel free to slap me around Chris (go easy though :) )... I''d try this by running a PeriodicalExecuter which called an Ajax.Request method. Then inside of the Ajax.Request parse the return JSON (or whatever return form you are using), place the value in the target DIV, and also place the value in a hidden Form element. Each call of Ajax.Request at the specified interval could then check the hidden Form value (last value updated), and you could perform your comparison with the new value, then complete whatever new DOM manipulation you intended if the val had changed. (never used lastText, lastResponseText, but that seems more elegant than placing it in a Form element. Is the above method violate any best practices? I''m trying to always pass JSON, and Ajax.PeriodicalUpdater does not allow that as far as I read. Always would like to hear other options myself) cheers, Mark On 6/9/07, Christophe Porteneuve <tdd-x+CfDp/qHev2eFz/2MeuCQ@public.gmane.org> wrote:> > > Hey, > > Terry Riegel a écrit : > > Using I am using the Ajax.PeriodicalUpdater, and it is working great. > > How do I test to see if the content has changed from the last request? > > Well, why do you need to? At any rate, it''s a simple matter of saving > the last responseText and comparing it to the new one. It does keep it > in its lastText property, btw. > > -- > Christophe Porteneuve a.k.a. TDD > "[They] did not know it was impossible, so they did it." --Mark Twain > Email: tdd-x+CfDp/qHev2eFz/2MeuCQ@public.gmane.org > > > >--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
example code to explain in detail what I mean... Chris is certainly more
experienced than I, but this works, Terry.:
<body id="partners" >
<input type="hidden" id="hdElem"
value="">
<div><input type="text"
id=''someFormElement'' value="This will update
every 5 seconds" size="45"></div>
<div id=''someElement''
style="height:70%;background-color:white;clear:left;">This will
update every
5 seconds</div>
</body>
<script type="text/javascript">
new PeriodicalExecuter
(
function(pe)
{
var url = "getValFromServer"; //server side file
var pars = "FORM.something=" + "hello";
//in case you
wanted to pass params
new Ajax.Request (url, {
method: ''post'',
parameters: pars,
onSuccess: function(transport){
var jsontimestr
transport.responseText.evalJSON(true);
// store value in a hidden Form element:
if (jsontimestr.latestValFromServer
=$(''hdElem'').value) {
alert("values were the same");
} else {
//update page
$(''someFormElement'').value
jsontimestr.latestValFromServer;
$(''hdElem'').value
jsontimestr.latestValFromServer;
$(''someElement'').innerHTML
jsontimestr.latestValFromServer;
}
}
});
},
5); // execute every 5 seconds
</script>
...would like to hear any thoughts.
cheers,
-Mark
On 6/9/07, Mark Holton <holtonma-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:>
> Ajax.PeriodicalUpdater does not extend from Ajax.Updater, so it does not
> support the evalJSON, and other methods, is that correct? So you are
> limited in someways, with respect to Ajax.Request
>
> Feel free to slap me around Chris (go easy though :) )... I''d try
this by
> running a PeriodicalExecuter which called an Ajax.Request method. Then
> inside of the Ajax.Request parse the return JSON (or whatever return form
> you are using), place the value in the target DIV, and also place the value
> in a hidden Form element. Each call of Ajax.Request at the specified
> interval could then check the hidden Form value (last value updated), and
> you could perform your comparison with the new value, then complete
whatever
> new DOM manipulation you intended if the val had changed.
>
> (never used lastText, lastResponseText, but that seems more elegant than
> placing it in a Form element. Is the above method violate any best
> practices? I''m trying to always pass JSON, and
Ajax.PeriodicalUpdaterdoes not allow that as far as I read. Always would like
to hear other
> options myself)
>
> cheers,
> Mark
>
> On 6/9/07, Christophe Porteneuve
<tdd-x+CfDp/qHev2eFz/2MeuCQ@public.gmane.org> wrote:
> >
> >
> > Hey,
> >
> > Terry Riegel a écrit :
> > > Using I am using the Ajax.PeriodicalUpdater, and it is working
great.
> > > How do I test to see if the content has changed from the last
request?
> >
> > Well, why do you need to? At any rate, it''s a simple matter
of saving
> > the last responseText and comparing it to the new one. It does keep
it
> > in its lastText property, btw.
> >
> > --
> > Christophe Porteneuve a.k.a. TDD
> > "[They] did not know it was impossible, so they did it."
--Mark Twain
> > Email: tdd-x+CfDp/qHev2eFz/2MeuCQ@public.gmane.org
> >
> > > >
> >
>
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---
Another related possibility, Terry, is that you could use
Form.Element.Observer to check the value of a Form element periodically,
then if the value changed (due to any update), it will trigger a callback
that you define. For performance reasons, you probably want to be frugal
about the number of polling pieces, but it''s a related option to your
general question, and is an option that is available in PrototypeJS lib:
Here''s a link if you''re interested:
http://www.prototypejs.org/api/timedObserver
new Form.Element.Observer(
''myelement'',
0.2, // 200 milliseconds
function(el, value){
alert(''The form control has changed value to: '' + value)
}
)
On 6/9/07, Mark Holton <holtonma-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:>
> example code to explain in detail what I mean... Chris is certainly more
> experienced than I, but this works, Terry.:
>
> <body id="partners" >
> <input type="hidden" id="hdElem"
value="">
> <div><input type="text"
id=''someFormElement'' value="This will update
> every 5 seconds" size="45"></div>
> <div id=''someElement''
> style="height:70%;background-color:white;clear:left;">This
will update every
> 5 seconds</div>
>
> </body>
>
> <script type="text/javascript">
> new PeriodicalExecuter
> (
> function(pe)
> {
> var url = "getValFromServer"; //server side
file
> var pars = "FORM.something=" +
"hello"; //in case you
> wanted to pass params
> new Ajax.Request (url, {
> method: ''post'',
> parameters: pars,
> onSuccess: function(transport){
> var jsontimestr >
transport.responseText.evalJSON(true);
> // store value in a hidden Form element:
> if (jsontimestr.latestValFromServer =>
$(''hdElem'').value) {
> alert("values were the same");
> } else {
> //update page
>
$(''someFormElement'').value >
jsontimestr.latestValFromServer;
> $(''hdElem'').value >
jsontimestr.latestValFromServer;
>
$(''someElement'').innerHTML >
jsontimestr.latestValFromServer;
> }
>
> }
> });
>
> },
> 5); // execute every 5 seconds
> </script>
>
> ...would like to hear any thoughts.
> cheers,
> -Mark
>
>
> On 6/9/07, Mark Holton <holtonma-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
> wrote:
> >
> > Ajax.PeriodicalUpdater does not extend from Ajax.Updater, so it does
not
> > support the evalJSON, and other methods, is that correct? So you are
> > limited in someways, with respect to Ajax.Request
> >
> > Feel free to slap me around Chris (go easy though :) )...
I''d try this
> > by running a PeriodicalExecuter which called an Ajax.Request method.
> > Then inside of the Ajax.Request parse the return JSON (or whatever
> > return form you are using), place the value in the target DIV, and
also
> > place the value in a hidden Form element. Each call of Ajax.Request
at
> > the specified interval could then check the hidden Form value (last
value
> > updated), and you could perform your comparison with the new value,
then
> > complete whatever new DOM manipulation you intended if the val had
changed.
> >
> > (never used lastText, lastResponseText, but that seems more elegant
than
> > placing it in a Form element. Is the above method violate any best
> > practices? I''m trying to always pass JSON, and
Ajax.PeriodicalUpdaterdoes not allow that as far as I read. Always would like
to hear other
> > options myself)
> >
> > cheers,
> > Mark
> >
> > On 6/9/07, Christophe Porteneuve <
tdd-x+CfDp/qHev2eFz/2MeuCQ@public.gmane.org> wrote:
> > >
> > >
> > > Hey,
> > >
> > > Terry Riegel a écrit :
> > > > Using I am using the Ajax.PeriodicalUpdater, and it is
working
> > > great.
> > > > How do I test to see if the content has changed from the
last
> > > request?
> > >
> > > Well, why do you need to? At any rate, it''s a simple
matter of saving
> > >
> > > the last responseText and comparing it to the new one. It does
keep
> > > it
> > > in its lastText property, btw.
> > >
> > > --
> > > Christophe Porteneuve a.k.a. TDD
> > > "[They] did not know it was impossible, so they did
it." --Mark Twain
> > > Email: tdd-x+CfDp/qHev2eFz/2MeuCQ@public.gmane.org
> > >
> > > > > >
> > >
> >
>
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---