Mostrar una función usando AJAX

2

Estoy intentando mostrar una función usando AJAX usando un complemento personalizado. Pero no parece funcionar.

Mi Javascript

(function($) {
$(document).on( 'click', 'a.mylink', function( event ) {
    $.ajax({
    url: testing.ajax_url,
        data : {
        action : 'diplay_user_table'
    },
    success : function( response ) {
        jQuery('#user_reponse').html( response );
    }


})
})
})(jQuery);

Mi PHP

add_action( 'wp_enqueue_scripts', 'ajax_test_enqueue_scripts' );
function ajax_test_enqueue_scripts() {
    wp_enqueue_script( 'test', plugins_url( '/test.js', __FILE__ ), array('jquery'), '1.0', true );
    wp_localize_script( 'test', 'testing', array(
        'ajax_url' => admin_url( 'admin-ajax.php' )
    ));
}

add_action('wp_ajax_my_action', 'diplay_user_table');

function diplay_user_table() {
    echo "function is loading in div";
}

Cuando hago clic en el enlace, solo muestra '0'. ¿Alguna idea?

    
pregunta aido14 26.07.2017 - 04:42

2 respuestas

3

No estás conectando la función a wp_ajax correctamente. Debe reemplazar la parte my_action con su nombre de acción que está utilizando en la solicitud AJAX. En tu caso es display_user_table . También necesita conectarlo a wp_ajax_nopriv para que funcione para los usuarios que han cerrado sesión. Aquí está tu gancho con esos cambios:

add_action('wp_ajax_diplay_user_table', 'diplay_user_table');
add_action('wp_ajax_nopriv_diplay_user_table', 'diplay_user_table');
function diplay_user_table() {
    echo "function is loading in div";
    wp_die();
}
    
respondido por el Jacob Peattie 26.07.2017 - 05:04
1

Puedes usar un método más rápido y rápido para deshacerte del molesto 0 que persigue todas las solicitudes de AJAX hasta el final. Al utilizar un punto final de REST API, no es necesario que escriba acciones diferentes para los usuarios registrados y no registrados.

Aquí hay un ejemplo rápido:

add_action( 'rest_api_init', function () {
    register_rest_route( 'aido14', '/my_path/', array(
            'methods' => 'GET', 
            'callback' => 'diplay_user_table' 
    ) );
});
// Callback function
function diplay_user_table() {
    $data['test1'] = "function is loading in div";
}
add_action( 'wp_enqueue_scripts', 'ajax_test_enqueue_scripts' );
function ajax_test_enqueue_scripts() {
    wp_enqueue_script( 'test', plugins_url( '/test.js', __FILE__ ), array('jquery'), '1.0', true );
    wp_localize_script( 'test', 'testing', array(
        'ajax_url' => site_url()
    ));
}

Y tu JavaScript:

(function($) {
    $(document).on( 'click', 'a.mylink', function( event ) {
        $.ajax({
            url: testing.ajax_url + '/wp-json/aido14/my_path',
            data : { parameter-here : value-here 
        },
        success : function( response.test1 ) {
            jQuery('#user_reponse').html( response );
        }
    });
})
})(jQuery);

Ahora, obtienes el mismo resultado al visitar /wp-json/aido14/my_path . Una respuesta JSON ordenada que puede utilizar incluso en aplicaciones móviles.

Y, como puede ver, puede pasar varias respuestas en una sola solicitud almacenándolas en una matriz. Esto será útil, por ejemplo, en los formularios de contacto e inicio de sesión.

    
respondido por el Jack Johansson 26.07.2017 - 05:34

Lea otras preguntas en las etiquetas