web-dev-qa-db-fra.com

redirection ne fonctionne pas dans la fonction ajax

J'utilise ajax pour publier les données du formulaire. En fin de compte, je veux rediriger vers la page d'accueil. J'essaie de suivre le code, cela ne fonctionne pas. Il renvoie l'erreur 302. Comment puis-je rediriger dans la fonction suivante? Merci.

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

function custom_register(){

    //process

    wp_redirect( home_url() );
    exit;
}
2
enam

La demande AJAX s'exécute en arrière-plan. Les redirections ici n'affectent pas la page principale. Et 302 n'est pas une erreur, c'est juste un code d'état.

Votre réponse AJAX doit renvoyer soit l'URL et le code d'état à la page appelante, soit un nombre tel que 1. Ensuite, vous gérez la redirection dans la page appelante:

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;
        }
    );
});
4
fuxia