redirect nu funcționează în funcția ajax

9 feb. 2014, 00:08:24
Vizualizări: 14.4K
Voturi: 4

Folosesc Ajax pentru a trimite datele din formular. La final vreau să redirecționez către pagina principală. Încerc următorul cod, dar nu funcționează. Returnează eroarea 302. Cum pot face redirecționarea în următoarea funcție? Mulțumesc.

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

function custom_register(){

    //procesare

    wp_redirect( home_url() );
    exit;
}
0
Toate răspunsurile la întrebare 3
0

Solicitarea AJAX rulează în fundal. Redirecționările de aici nu afectează pagina principală. Iar codul de stare 302 nu este o eroare, este doar un cod de stare.

Răspunsul AJAX ar trebui să returneze fie URL-ul și codul de stare către pagina apelantă, fie doar un număr precum 1. Apoi gestionați redirecționarea în pagina apelantă:

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

Sunt câțiva ani în urmă, dar cred că acest răspuns poate ajuta pe alții:

Am folosit o funcție pentru a redirecționa dintr-un apel AJAX JS. Mai întâi, setează câteva valori în baza de date și apoi încearcă să redirecționeze în acest fel:

if (wp_safe_redirect( $url ))

    exit();

Dar doar returnează aceeași pagină urmată de 'undefined'.

Am rezolvat în final partea de redirecționare direct în JS:

window.location.href = url; // păstrează istoricul paginii

Funcționează și:

window.location.replace( url ); // curăță istoricul paginii
20 mai 2022 17:57:54
1
-3

Dacă dorești să faci o redirecționare, folosește JavaScript window.location="your url" în codul tău PHP.

Încearcă asta în funcția apelată prin cererea AJAX:

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

function custom_register(){

    //procesare

    $url = home_url(); 

    ?>
       <script>

        demo(); //numele funcției JavaScript

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

       </script>

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

Cum răspunde acest lucru la întrebare?

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