[Seaside] How can I invoke the callback of an anchor using jQuery?

Johan Brichau johan at inceptive.be
Mon Mar 14 11:17:22 UTC 2011


A callback will always trigger a full page rendering. The callback mechanism works with a url in the anchor and therefore the browser expects a complete html page as a response.
Instead, try to do something along the lines of:

html anchor
	url: 'javascript:{}'; 
	onClick: (html jQuery ajax script: [ :s |
			self doSomething;
     			 s << (s jQuery: 'mydiv')
         				html: [ :r | self renderMyDivOn: r ] ]) ;
	with: 'doit'.

Basically: include the action inside the ajax callback, right before invoking the rendering. 
If you want to separate the blocks, you will need to use a callback: [...]; onComplete:[...] construction, I think.
Overriding of the url has proven necessary to me to avoid default browser behavior.

On 14 Mar 2011, at 11:49, Jan van de Sandt wrote:

> Hello,
> If I have an anchor with a callback:
> html anchor
>    callback: [ self doSomething ] ;
>    with: 'DoIt'.
> Now I want to use jQuery to update only part of the page instead of a full page reload:
> html anchor
>    callback: [ self doSomething ] ;
>    onChange: (html jQuery ajax script: [ :s |
>       s << (s jQuery: 'mydiv')
>          html: [ :r | self renderMyDivOn: r ] ]) ;
>    with: 'DoIt'.
> How do I make sure that the callback is performed before the render method is executed? With form elements you can use serializeThis but I guess that doesn't work for anchor elements.
> Jan
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

More information about the seaside mailing list