Rendering Callbacks during an Ajax callback

"[email protected]" <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.squeak.seaside
Message-ID <[email protected]>
Dear Seasiders,

I must bee overlooking something obvious.

I want to redraw a listItem in and unorderedList (it is a boostrap 
.list-item .row, but that doesn't really matter) in an Ajax callback.
This listItem contains normal anchors with callbacks.

The ajax call is initiated in a javascript function, not rendered by 
Seaside. This call to ajax does the following;


$.ajax( ... ).done(function(result) {
         row.replaceWith(result);});


where row is a jquery that contains the listItem. The rerendering works 
very well and all seems good.

Except for one little detail: the callbacks rendered in the AJax 
callback are re-numbered from 1 and once you click on oneof the 
re-rendered link it is a nice surprise what method might get called on 
the server. I guess I am messing with the _s and _k parameters in my 
caööback method.

So here is my callback method which answers the re-rendered listItem/row:


changeSomeStuffOnTheServerAndRedraw     | rahmenElementId fields req betrag planElement conv wrapper ctx 
contKey row resp |        ctx := self requestContext.        req := ctx 
request.        resp := ctx response.        fields := req fields.      
   "Some boring business stuff which works like a charm, including 
finding the right business objects, changing them, commits in Glorp and 
whatnot"

         "Re-render the row"

         row := self findTheListItemComponentForRerendering.        
resp            status: 200;            contentType: (WAMimeType 
textHtml charset: ctx handler charSet);            nextPutAll: (        
         (self rendererClass builder)"**->"              actionUrl: (ctx 
session actionUrlForKey: contKey);   "I also tried leaving this out --> 
even worse"                    fullDocument: false;                    
render: [:html |                        html render: row ])

I think the problem is either the fact that I shouldn't be using the 
requestContext of the Ajax callback, or the actionUrl: part is wrong.
The rows not re-rendered still work like a charm.


You can see in the attached picture that both a not-re-rendered row and 
the re-rendered row point to the same 's anchors point to the same url 
with identical _s and _k parameters, but thesecond one is the 
re-rendered and its callback number is 1 instead of 51, which it had 
before re-rendering:



If I use the URL and replace the 1 with 51, The correct callback is 
being called, the initial callback is still registered.
I wouldn't mind if the re-render registered another Callback, even if 
that means I waste memory, but it seems I am registering the new 
callbacks in some registry that's new for the ajax callback.... (I am 
confused)

Any hints? Ideas? How can I make sure the anchors in that redrawn 
listItem find their callback blocks on the server?


Thank you in advance

Joachim






-- 
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:[email protected]
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1

_______________________________________________
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.