Yo uso el jquery 1.8.2
 
este es mi ajax    
Código Javascript
:
Ver original$.ajax({
    url: 'login.php',
    type: 'POST',
    data: $('#login').serialize(),
    //dataType: 'json',
    cache: false,
     beforeSend: function(){
        $("#submit").fadeOut("fast");
        $("#beforeSubmit").fadeIn("slow");
    },
    success: function(result) {
        alert(result);
        return false;
        $("#beforeSubmit").fadeOut(0);
        $("#submit").fadeIn("slow");
        if(result){
            //window.location = "/panel";
        }else{
            $("#error").fadeIn("slow");
        }
    },
    error: function(jqXHR,textStatus,errorThrown) {
        alert(textStatus.toSource());
        alert(jqXHR.toSource());
    },
});
  
  
si hago    
Código Javascript
:
Ver originalalert($('#login').serialize())
  
toma los datos bien, pero en el php si hago esto:    
Devuelve un array vacio. 
Por ahi capaz que es lo mismo que le pasa a keygen20. 
PD: este login lo uso hace mas de 5 meses de un dia para el otro se volvio loco!