Re: Execute jQuery script upon #onAjaxComplete?
"Esteban A. Maringolo" <[email protected]>
| Newsgroups | gmane.comp.lang.smalltalk.squeak.seaside |
|---|---|
| Message-ID | <CAJMgPCKVp1g3_u+PReBXRY7L3uw_WKVwrJ9h_hq62KhqcybVwg@mail.gmail.com> |
I would have done it this way: html document addLoadScript: ( html jQuery document onAjaxComplete:( (html jQuery id: self classicMenuComponent systemMessageNotifier mainDivId) ajax global: false; "to avoid inifite recursion" html: [:r | self classicMenuComponent systemMessageNotifier renderContentOn: r ] ) ) This MUST work. Otherwise I don't know... :D Beware you're doing *html jQuery ajax* every time you evaluate the onAjaxComplete: function, and that is discouraged, because you're not working in an instance of jQuery, but instead on the class. Esteban A. Maringolo 2016-09-23 17:58 GMT-03:00 Mariano Martinez Peck <[email protected]>: > Well, with help from Esteban the (via chat), this ended up working as I > expected: > > > html document addLoadScript: ( > html jQuery document onAjaxComplete:( > html jQuery > ajax > global: false; "to avoid inifite recursion" > script: [ :s | s << ( (html jQuery id: self classicMenuComponent > systemMessageNotifier mainDivId) > replaceWith: [:r | self classicMenuComponent systemMessageNotifier > renderContentOn: r ] > ) ] > ) > ) > > > > Thanks for the help! > > On Fri, Sep 23, 2016 at 5:30 PM, Esteban A. Maringolo < > [email protected]> wrote: > >> Try this: >> >> html document addLoadScript: ( >> html jQuery document onAjaxComplete: ( >> (html jQuery id: self systemMessageNotifier mainDivId) >> load >> global: false; "to avoid infinite recursion see [1]" >> html: [:r | self systemMessageNotifier renderContentOn: r ] >> ) >> ). >> >> [1] If $.ajax() or $.ajaxSetup() is called with the global option set >> to false, the .ajaxComplete() method will not fire. >> <http://api.jquery.com/ajaxComplete/> >> Esteban A. Maringolo >> >> >> 2016-09-23 16:07 GMT-03:00 Mariano Martinez Peck <[email protected]>: >> > >> > >> > On Fri, Sep 23, 2016 at 3:23 PM, Esteban A. Maringolo < >> [email protected]> >> > wrote: >> >> >> >> 2016-09-23 12:21 GMT-03:00 Mariano Martinez Peck < >> [email protected]>: >> >> > The problem, as usual, is all ajax requests (and my app is now almost >> >> > everything with ajax). >> >> > I need to hook on ajax calls so that I could also re-render the >> >> > notifications components as >> >> > there could have been new notifications since the last rendering. >> >> >> >> > html >> >> > document >> >> > addLoadScript: (html jQuery document >> >> > onAjaxComplete: ( >> >> > (html jQuery id: self systemMessageNotifier mainDivId) >> replaceWith: >> >> > [:r | >> >> > self systemMessageNotifier renderContentOn: r. >> >> > ] >> >> > )). >> >> >> >> > What I don't know how to do is what I want hahhaa. >> >> >I would try to avoid WebSockets for the moment. I >> >> > thought maybe doing some jQuery polling ? >> >> >> >> I don't understand what you want to implement. >> > >> > >> > Let's say... an admin user of the app, fires a broadcast message. This >> is a >> > message object stored in the DB. All logged users, should render the >> active >> > messages on the main header of the app. Something like "server is going >> to >> > be restarted in 10 minutes". Or whatever. So what I wanted to do is that >> > whenever the user "uses" the app, I would check if there are >> notifications >> > and show them. With normal requests this is easy as the main messages >> header >> > is re-rendered together with the whole page. >> > >> > My problem is how to re-render that component (of the main header) on >> > EACH/ALL ajax callbacks. Why? Because most of my app is now with ajax, >> none >> > of the ajax calls will re-render the "header" nor the component that >> renders >> > the alerts. So.. no alert is shown until I do a normal request. >> > >> > So...what I don't know how to do is a generic way in which I can >> re-render >> > the messages component on each ajax callback. >> > >> >> >> >> >> >> If you want to notify something, then such notification should come as >> >> a response of the xhr and implement the ajaxComplete function handler >> >> to parse the response searching for the notification you want to >> >> display. >> > >> > >> > The notifications comes from a query in the DB. There could be >> notifications >> > still valid and the user just entered to the app for example. >> > >> >> >> >> >> >> The alternative is to include a <script> in every ajax response to >> >> update the notification on the client side. >> > >> > >> > >> > And how could I do this in a generic way (not on every ajax response) ? >> > >> > Thanks in advance! >> > >> >> >> >> >> >> I also don't see how you using websockets would benefit you unless you >> >> hook the socket to an announcer. >> >> >> >> Regards, >> >> >> >> -- >> >> Esteban >> >> _______________________________________________ >> >> seaside mailing list >> >> [email protected] >> >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> > >> > >> > >> > >> > -- >> > Mariano >> > http://marianopeck.wordpress.com >> > >> > _______________________________________________ >> > seaside mailing list >> > [email protected] >> > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> > >> _______________________________________________ >> seaside mailing list >> [email protected] >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> > > > > -- > Mariano > http://marianopeck.wordpress.com > > _______________________________________________ > seaside mailing list > [email protected] > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > _______________________________________________ seaside mailing list [email protected] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside