Solicitud ajax de administrador devuelve 0 con die ()

10

Así que estoy usando esta configuración para una llamada AJAX en el área administrativa ( like this ):

add_action( 'admin_head', 'ajaxPerNgg' );

function ajaxPerNgg(){ ?>
<script type="text/javascript" >
jQuery(document).ready(function() {
    jQuery("#message").remove();
    jQuery("#errore a#attivo").click(
        function(){
            var data = {
                action: 'my_action'
            };
            jQuery.post(ajaxurl, data, function(response) {
                if(response == "attivato")
                    jQuery("#errore a#inattivo").attr("id","completato").html("Attivato");
                else
                    jQuery("#errore a#inattivo").attr("id","attivo").html("Attivalo ora");
            });
        }
    );
});
</script>
<?php }

add_action('wp_ajax_my_action', 'my_action_callback');

function my_action_callback() {
    echo 'attivato';
    die();
}

Es solo un código de prueba, pero siempre devuelve 0 en lugar de la cadena "attivato". También encuentra la url de ajax correctamente, sin un error 404.
¿Cuál es el problema?

    
pregunta Ivano Mercuri 15.03.2012 - 17:40

3 respuestas

21

Añade esto también: add_action('wp_ajax_nopriv_my_action', 'my_action_callback'); . Observe el nopriv .

¡Solucionará tu problema!

    
respondido por el Rutwick Gangurde 22.06.2012 - 08:00
15

Tuve el mismo problema. Solución:

add_action('wp_ajax_nopriv_my_action', 'my_action_callback');
add_action('wp_ajax_my_action', 'my_action_callback');

Si no agrega ambos (con y sin nopriv) funcionará en modo conectado o solo en modo cerrado. nopriv es para cerrar sesión, el otro es para iniciar sesión.

    
respondido por el Paul 31.07.2012 - 10:40
4

No estoy seguro de si este es tu problema, pero recibí una respuesta de solo "0" y me llevó más tiempo resolverlo. Además de asegurarte de poner exit o die al final de tu función php, descubrí que tienes que poner tu add_action('wp_ajax_... bit en el nivel superior de tu complemento. Lo tenía anidado dentro de mi gancho admin_menu , que no funcionó. No estoy seguro de si su código anterior es parte de una inclusión dentro de una función de su archivo php de plugin de nivel superior (como el mío).

    
respondido por el Jeff 22.03.2012 - 22:20

Lea otras preguntas en las etiquetas