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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.