Soporte » WordPress Avanzado » Ayuda con Ajax

  • Resuelto lujan82

    (@lujan82)


    Hola, estoy intentando aprender a usar ajax en wordpress pero no consigo que me funcione siguiendo varios tutoriales. En principio tengo este código en una de las paginas:

    <script>
    jQuery(document).ready(function($) {
    jQuery(‘span#generate’).click(function(event) {
    
    jQuery.ajax({
    type : «post»,
    url : ‘<?php admin_url( ‘admin-ajax.php’ ); ?>’,
    data : {
    action: «hola»,
    message : «el boton se apretó»
    },
    error: function(response){
    console.log(response);
    },
    success: function(response) {
    $(‘#txtMessage’).text(response.message);
    }
    })
    });
    });
    </script>
    
    y en functions:
    
    function hola(){
    global $wpdb;
    $wpdb->insert( ‘eventos’,
    array(
    ‘title’ => ‘title’,
    ‘description’ => ‘description’,
    ‘url’ => ‘https://cdn.pixabay.com/photo/2017/05/24/09/28/great-2339957_960_720.jpg’,
    ‘date’ => ‘2000-08-21’,
    ‘code’ => ‘4321’
    )
    );
    wp_die();
    }
    
    add_action( ‘wp_ajax_hola’, ‘hola’);
    add_action( ‘wp_ajax_nopriv _hola’ , ‘hola’ );
    • Este debate fue modificado hace 1 mes, 2 semanas por  almendron.
Viendo 2 respuestas - 1 de 2 (de 2 total)
  • Hola @lujan82

    Por lo que veo ese codigo no esta bien desde el principio.

    – las ultimas versiones de jQuery usa otros metodos, revisa la documentacion del jQuery.
    admin_url le falta el echo.
    response.message no existe.
    – No tomas medidas de seguridad, que deberian estar dentro de la function «hola», para comprobar que realmente lo ejecuta quien deberia, etc…
    – Como parece ser que necesitas que devuelva algo, lo correcto es wp_send_json_success o wp_send_json_error.

    Te recomiendo que mires el archivo wp-admin/includes/ajax-actions.php donde veras ejemplos de como crear una function correctamente para los actions wp_ajax_, despues debes utilizar unicamente los necesarios, si es en el FrontEnd debes usar el wp_ajax_nopriv y en caso contrario el wp_ajax.

    Link de info:
    https://developer.wordpress.org/reference/functions/admin_url/
    https://codex.wordpress.org/AJAX_in_Plugins
    https://api.jquery.com/jQuery.ajax/

    • Esta respuesta fue modificada hace 1 mes, 2 semanas por  kallookoo.
    • Esta respuesta fue modificada hace 1 mes, 2 semanas por  kallookoo.

    Gracias por la ayuda, esta noche le pegaré un vistazo para tener las cosas más claras

Viendo 2 respuestas - 1 de 2 (de 2 total)
  • Debes estar registrado para responder a este tema.