Salve a tutti ho un piccolo problema che mi si ripete sempre e non capisco perchè, ecco un esempio

JS:

codice:
var form = $(".add-wedding-form").serialize();
$.ajax({
    type : "POST",
url : "URL",
data : "function=add_wedding&token="+token+"&"+form,
dateType:"text",
success:function(response){
        alert(response);
}
});
return false;
Lo script sopra richiama praticamente questa funzione php

PHP

codice:

public function add_wedding(){
    $test = $_POST['n_sposa'];
echo "$test";
}
Come vedete non faccio altro che prendere la variabile post "n_sposa" ( che è passata in ajax dal form serializzato ) e fare una echo che vorrei fosse visibile nell'alert di risposta dello script JS. Bene al momento che io metta un'echo o un return mi viene tornato sempre una stringa vuota, come mai?

Tutto il marchingegno funziona perchè se metto una echo statica tipo echo "ciao"; mi viene ritornata correttamente.

Dove sbaglio?

Grazie in anticipo !