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 debeforeSend
globalmente.
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?

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 };
.

O, en la llamada ajax; establece data:
como data: { 'action': 'my_action', 'whatever': 1234 },

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é?

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:
?

en realidad encontré mi problema.. no es wp_admin, es wp-admin. ¡muchas gracias, tío! :D
