redirección no funciona en función ajax

9 feb 2014, 00:08:24
Vistas: 14.4K
Votos: 4

Estoy usando ajax para enviar los datos del formulario. Al final quiero redirigir a la página de inicio. Estoy intentando el siguiente código, pero no funciona. Devuelve error 302. ¿Cómo puedo redirigir en la siguiente función? Gracias.

add_action('wp_ajax_nopriv_custom_register', 'custom_register');
add_action('wp_ajax_custom_register', 'custom_register');

function custom_register(){

    //procesar datos

    wp_redirect( home_url() );
    exit;
}
0
Todas las respuestas a la pregunta 3
0

La solicitud AJAX se ejecuta en segundo plano. Los redireccionamientos aquí no afectan la página principal. Y 302 no es un error, es solo un código de estado.

La respuesta de tu AJAX debe devolver ya sea la URL y el código de estado a la página que realiza la llamada o simplemente un número como 1. Luego manejas el redireccionamiento en la página que realiza la llamada:

jQuery( document ).ready( function( $ ) {
    var url = '<?php echo home_url(); ?>';
    $( '#ajaxtrigger' ).on( 'click',
        function() {
            $.post( ajaxurl, {}, function( response ) {
                if ( 1 == response )
                    top.location.replace(url);
            });
            return false;
        }
    );
});
9 feb 2014 00:18:40
0

Tiene algunos años de antigüedad pero creo que esta respuesta puede ayudar a otros:

He utilizado una función para redirigir desde una llamada AJAX con JS. Primero, establece algunos valores en la base de datos y luego intenta redirigir de esta manera:

if (wp_safe_redirect( $url )
    exit();

Pero simplemente devuelve la misma página seguida de 'undefined'.

Finalmente resolví directamente la parte de redirección en JS:

window.location.href = url; // mantiene el historial de la página

También funciona:

window.location.replace( url ); // limpia el historial de la página
20 may 2022 17:57:54
1
-3

Si deseas redirigir entonces usa javascript window.lcation="tu url" en tu código php.

Prueba esto en tu función que es llamada por la llamada ajax;

add_action('wp_ajax_nopriv_custom_register', 'custom_register');
add_action('wp_ajax_custom_register', 'custom_register');

function custom_register(){

    //proceso

    $url = home_url(); 

    ?>
       <script>

        demo(); //nombre de la función de javascript

        function demo()
        {
            window.location="<?php echo $url ?>";
        }

       </script>

    <?php exit;
}
30 sept 2014 12:48:14
Comentarios

¿Cómo responde esto a la pregunta?

Johannes Pille Johannes Pille
30 sept 2014 12:54:54