Cómo configurar la opción beforesend en métodos AJAX de WordPress
¿Cómo configuro la opción beforesend en AJAX de WordPress? Quiero mostrar una opción de carga.
Este es mi código:
function showmyvideos() {
var datas="data";
var data = {
action: 'my_vids',
link: datas
};
ajaxurl= "http://localhost/wordpress/wp-admin/admin-ajax.php";
jQuery.post(ajaxurl, data,function(response) {
});
}
Tienes dos opciones:
- Usar
jQuery.ajax()en lugar dejQuery.post() - Usar
jQuery.ajaxSetup()para cambiar el comportamiento debeforeSendglobalmente.
Referencia: https://stackoverflow.com/questions/2257975/using-beforesend-and-complete-with-post
Para la posteridad.
Todavía puedes usar $.ajax() sin tener que usar $.ajaxSeteup(). Todo lo que necesitas especificar es el type y asegurarte de que esté configurado como POST.
$.ajax({
url: localized_script.ajax_url, /* URL de AJAX del administrador desde el script localizado */
type: 'POST', /* Importante */
data: data_object, /* Objeto de datos incluyendo 'action' y todas las variables post */
beforeSend: function() {
alert('Antes de enviar');
},
success : function(response) {
alert(response); /* Respuesta de la función AJAX */
},
complete: function() {
alert('Completado');
}
});
Como puedes ver, puedes configurar diferentes funciones/eventos para beforeSend, success y complete.
Digamos que estoy usando $.post, tengo el campo - action: [nombre del "add_action('wp_ajax_.." etc]. ¿Dónde lo escribo cuando uso $.ajax?
Kar19
Lo configurarás en el "data_object". Justo antes de la llamada $.ajax; definirás data_object. Algo como, data_object = { 'action': 'my_action', 'whatever': 1234 };.
josh
O, en la llamada ajax; establece data: como data: { 'action': 'my_action', 'whatever': 1234 },
josh
OK, funciona.
Por alguna razón obtengo un error
POST http://54.149.xx.xx/wp_admin/admin_ajax.php 404 (Not Found) en mi consola.
¿Alguna pista de por qué?
Kar19
Tienes que pasar la URL de admin_ajax.php al script; usando localización. Puedes intentar usar url: ajaxurl (en lugar de url: localized_script.ajax_url) si está disponible como una variable global js en la página donde estás incluyendo tu script. ¿Qué valor estás usando para url:?
josh
en realidad encontré mi problema.. no es wp_admin, es wp-admin. ¡muchas gracias, tío! :D
Kar19