[Seaside] Re: Checkbox and AJAX?

Mariano Martinez Peck marianopeck at gmail.com
Sat Jul 5 14:48:27 UTC 2014


On Sat, Jul 5, 2014 at 11:37 AM, Paul DeBruicker <pdebruic at gmail.com> wrote:

> Try changing from #script: to #onSuccess:


Awesome! that worked. Now, can you explain to a newbie what is the
difference please? :)

Thanks,



>


>
>
>
>
> Mariano Martinez Peck wrote
> > Hi,
> >
> > I am back trying to make this example to work. What I cannot do is to add
> > my "selectedRow" css class to the selected TR. I did this:
> >
> > html form: [
> > html label:[
> > html checkbox
> >  onClick:
> >                 (html jQuery ajax
> >                           serializeThisWithHidden;
> >                           script: [ :s | s << ('$(''#tr', anInteger
> > asString, ''').addClass(''selectedRow'');')
> >  ]);
> > value: (self isSelected: anObject);
> > callback: [ :value | self selectRow: anObject value: value ]]]
> >
> >
> > The callbacks does work, the server gets correct etc...in fact, if I then
> > refresh the page, the row is correctly applied the "selected" row. The
> > problem is that I cannot make the row selected with the #script:   When I
> > debug, the #script:  is something like:
> > $('#tr4').addClass('selectedRow');
> >
> > But nothing happens. If I go to a JavaScript console in the browser and I
> > paste the very same line, it works!
> >
> > Any ideas what I am doing wrong?
> >
> > Thanks in advance,
> >
> >
> >
> > On Tue, Dec 24, 2013 at 12:06 PM, Mariano Martinez Peck <
>
> > marianopeck@
>
> >> wrote:
> >
> >>
> >>
> >>
> >> On Mon, Dec 23, 2013 at 12:27 PM, Johan Brichau &lt;
>
> > johan@
>
> > &gt;
> >> wrote:
> >>
> >>>
> >>> On 23 Dec 2013, at 14:15, Mariano Martinez Peck &lt;
>
> > marianopeck@
>
> > &gt;
> >>> wrote:
> >>>
> >>> > Indeed, it seems I need this because even if I render only the table,
> >>> the scroll goes up again to the top of the table....
> >>>
> >>> Do you replace the table or only its inner html?
> >>
> >>
> >> I was replacing a div which is a container of the table.
> >>
> >>
> >>> In general, to keep the scroll position of an element, you must replace
> >>> its contents (and not the element itself).
> >>> Perhaps in case of a table, you may only re-render the
>
> > , and then
> >>> also only replacing its inner html.
> >>>
> >>>
> >> Ok, I will try that.
> >>
> >>
> >>
> >>>  > So..which other solution you found besides explicit id per row? Of
> >>> course in the server it is easy to know which row to render, the
> problem
> >>> is
> >>> how to know it in client side.
> >>> > I am would be glad you listen your approaches here.
> >>>
> >>> You want to replace the row where the user clicked in, right?
> >>>
> >>
> >> Yes. I just need to re-render it so that since it is selected now, it
> has
> >> a different css.
> >>
> >>
> >>> The $(this) will refer to the checkbox element you clicked, but not
> >>> anymore in the response script. So, you need to capture it in a lexical
> >>> scope.
> >>>
> >>>
> >> ahaaaa, good point!
> >>
> >>
> >>> This is what I would try:
> >>>
> >>>  onClick:  (((JSStream on: 'var myself = this'),
> >>>                 (html jQuery ajax
> >>>                           serializeThisWithHidden;
> >>>                           script: [ :s | s << (((s jQuery
> >>> expression:(JSStream on: 'myself')) closest: 'tr') html: self report)
> >>> ]))
> >>> asFunction apply: #());
> >>>
> >>> The idea is to generate this:
> >>>
> >>> onclick = "(function(){ var myself = this; <
> > <ajax call>
> >> })()"
> >>>
> >>> The above might or might not work because I did not try it. But
> >>> something
> >>> along those lines should work...
> >>>
> >>>
> >> mmmm this is what get's generated:
> >>
> >> function(){var myself =
> >>
> this;jQuery.ajax({"url":"/MyApp","data":["_s=w9GmvDOQpAp_pp0c","_k=-3MfxH3kyGWxn6Vi","96",jQuery(this).next("input:hidden").andSelf().serialize()].join("&"),"dataType":"script"})}()
> >>
> >> I don't see 'myself' used it later....
> >>
> >> BTW, in your example you do: "html: self report". but...since in this
> >> case
> >> I am re-rendering the row only (and not the whole table/report), I
> should
> >> only re-render the row right?   so I should do something like instead:
> >>
> >> self renderRowOfObject: anObject with: html   ?
> >>
> >> and there write the row
> >>
> >> Thanks for you help Johan.
> >>
> >>
> >>  Johan_______________________________________________
> >>> seaside mailing list
> >>>
>
> > seaside at .squeakfoundation
>
> >>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> >>>
> >>
> >>
> >>
> >> --
> >> Mariano
> >> http://marianopeck.wordpress.com
> >>
> >
> >
> >
> > --
> > Mariano
> > http://marianopeck.wordpress.com
> >
> > _______________________________________________
> > seaside mailing list
>
> > seaside at .squeakfoundation
>
> > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
>
>
>
>
> --
> View this message in context:
> http://forum.world.st/Checkbox-and-AJAX-tp4731692p4766672.html
> Sent from the Seaside General mailing list archive at Nabble.com.
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>



-- 
Mariano
http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20140705/6c8b3933/attachment.htm


More information about the seaside mailing list