Gracias jackson666.
Finalmente he descubierto que el helper "link_to_remote()" de symfony tiene una opción llamada "complete" que permite añadir una comando javascript que se ejecutará después de la funcion del controlador (executeCambiarEstadoLeido()) tras haber pulsado sobre el link.
De todos modos mi problema sigue siendo el mismo: tras pulsar sobre el link, no cambia la clase del <div>...
Asi es como queda mi codigo con el "helper" link_to_remote():
Código PHP:
<div class="mensaje_no_leido" id="mensaje_1">
Contenido mensaje
<div class="pie_mensaje">
<?php echo link_to_remote('Marcar como leido', array(
'url' => 'mensaje/cambiarEstadoLeido?id='.$mensaje->getId(),
'update' => 'mensaje_1',
'complete' => 'document.getElementById("mensaje_1").className("mensaje_leido");',
//'complete' => "$('mensaje_1').toggleClassName('mensaje_leido');",
'loading' => visual_effect(''),
'complete'=> visual_effect(''),
)); ?>
<?php echo link_to_function('¡Pínchame!', "mifuncion()") ?>
</div>
</div>
Aqui teneis también el codigo fuente:
Código HTML:
<div id="mensaje_1" class="mensaje_no_leido">
Contenido mensaje
<div class="pie_mensaje">
<a onclick="new Ajax.Updater('mensaje_1', '/rs/web/frontend_dev.php/mensaje/cambiarEstadoLeido/id/1', {asynchronous:true, evalScripts:false, onComplete:function(request, json){new Effect.(element, {});}, onLoading:function(request, json){new Effect.(element, {});}});; return false;" href="#">Marcar como leido</a>
<a onclick="mifuncion(); return false;" href="#">¡Pínchame!</a>
</div>
</div>
Un saludo
Javi