A menos que finalice la función de procesamiento de Ajax con exit()
o die()
, la función Ajax recibe la salida deseada y correcta, pero sigue 0
.
¿Alguna idea de por qué está sucediendo eso?
¿Está destinado a ser así o se podría arreglar?
add_action('wp_ajax_get_homepage', 'get_homepage');
add_action('wp_ajax_nopriv_get_homepage', 'get_homepage');
function get_homepage(){
echo "get_homepage ->";
exit();
}
He leído en AJAX en Plugins , pero ¿por qué es necesario?
Respuestas:
La respuesta predeterminada de
admin-ajax.php
es,die( '0' );
... añadiendo su propio
wp_die()
o deexit()
odie()
después de regresar a sus evita que el contenido deseados la respuesta por defecto deadmin-ajax.php
ser devuelto también.También generalmente significa que su llamada ajax ha sido exitosa.
En última instancia, para responder a su pregunta, debe funcionar de esta manera. Lo que está haciendo al salir después de devolver su contenido es lo correcto.
fuente
die()
oexit()
después de hacer eco de su contenido / datos. En lasuccess/complete
función de devolución de llamada de su método ajax, puede manipular los datos y usarlos para llenar el DOM. También puede hacer cualquier verificación de error adicional para validar la integridad de los datos. También puede verificar errores en su función de devolución de llamada PHP antes de la salida. Esencialmente salir después de devolver su respuesta asegurará que no se lleve0
bien. Por cierto, solo porque reciba una0
respuesta no significa que su llamada ajax haya sido 100% exitosa. Sin embargo, es fácil saber cuándo inspecciona su salida.wp_die()
agregado en 2.0.4wp_die
a otros complementos o códigos de temas que puedan engancharse a dicho proceso, luego, usardie
oexit
está bien. Si tiene la intención de liberar su código como OSS o de otro modo, donde su código necesita jugar bien con los demás, entonceswp_die
sería más preferible, de acuerdo.