Il reindirizzamento non funziona nella funzione ajax

9 feb 2014, 00:08:24
Visualizzazioni: 14.4K
Voti: 4

Sto utilizzando ajax per inviare i dati del form. Alla fine voglio reindirizzare alla homepage. Sto provando il seguente codice, ma non funziona. Restituisce l'errore 302. Come posso effettuare il reindirizzamento nella seguente funzione? Grazie.

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

function custom_register(){

    //elaborazione dei dati

    wp_redirect( home_url() );
    exit;
}
0
Tutte le risposte alla domanda 3
0

La richiesta AJAX viene eseguita in background. I reindirizzamenti qui non influenzano la pagina principale. E il 302 non è un errore, è semplicemente un codice di stato.

La tua risposta AJAX dovrebbe restituire alla pagina chiamante l'URL e il codice di stato oppure semplicemente un numero come 1. Poi gestisci il reindirizzamento nella pagina chiamante:

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

Sono passati alcuni anni ma penso che questa risposta possa aiutare altri:

Ho utilizzato una funzione per reindirizzare da una chiamata AJAX in JS. Prima imposta alcuni valori nel database e poi prova a reindirizzare in questo modo:

if (wp_safe_redirect( $url ))

    exit();

Ma restituisce semplicemente la stessa pagina seguita da 'undefined'.

Alla fine ho risolto gestendo direttamente il reindirizzamento in JS:

window.location.href = url; // mantiene la cronologia della pagina

Funziona anche:

window.location.replace( url ); // pulisce la cronologia della pagina
20 mag 2022 17:57:54
1
-3

Se vuoi effettuare un reindirizzamento, utilizza JavaScript window.location="your url" nel tuo codice PHP.

Prova questo nella tua funzione chiamata dalla richiesta AJAX:

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

function custom_register(){

    //elaborazione

    $url = home_url(); 

    ?>
       <script>

        demo(); //nome della funzione JavaScript

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

       </script>

    <?php exit;
}
30 set 2014 12:48:14
Commenti

Come risponde questo alla domanda?

Johannes Pille Johannes Pille
30 set 2014 12:54:54