Ok je me répond à moi-même. Le problème venait d'une erreur bête. J'ai oublié la petite virgule dans mon code Javascript entre la fonction beforeSend et success. Voici le code corrigé :
<script type="text/javascript">
$(function(){
function displayError(tag, value){
$( tag ).parent().addClass('error');
$( tag ).parent().append('<div class="error-message">' + value + '</div>');
}
$( '#addalbum' ).live('click', function(){
$.ajax({
type : 'POST',
url : $( '#add-new-album' ).attr('action'),
data : $( '#add-new-album' ).serializeArray(),
dataType : 'json',
beforeSend : function(){
$( '#add-new-album' ).find('.error').removeClass('error');
$( '#add-new-album' ).find('.error-message').remove();
}, // Ici j'avais oublié la virgule
success : function(json){
if(json == 'success'){
$.fancybox.close();
}else{
if(data.name){ displayError( '#AlbumName', data.name ); }
}
}
});
return false;
});
});
</script>