Hola, yo también tenía el mismo error, así que estuve buscando la forma de resolverlo, no encontré en google alguna ayuda para resolverlo.
La única forma que encontré para evitar tener que dar doble click para enviar un formulario fue llamando con javascript la acción correspondiente.
En mi caso, como era un formulario, utilicé por default que regresara falso al enviar el formulario.
Luego, cuando Xajax hace las validaciones correspondientes en lugar de establecer una variable como TRUE, asigné a la respuesta de xajax la acción que sigue a la validación.
Por ejemplo, para un formulario asigné:
Código PHP:
$objResponse->script("document.getElementById('formulario').submit();");
# Nota, si usas xajax 0.2, sería addScript.
Para tu ejemplo sería:
PHP:
Código PHP:
if($user->logged()) {
$objResponse->addScript("window.location='download.php?f_id={file_id}'");
}
return $objResponse;
HTML:
Código HTML:
<script>
function check(){
xajax_check_if_logged();
return false;
}
</script>
<a href="javascript: return check();">Descarga</a>
Si alguien tiene una mejor solución...