De ce WordPress adaugă 0 (zero) la un răspuns Ajax?
Dacă nu închei funcția de procesare Ajax cu exit()
sau die()
, funcția Ajax primește rezultatul dorit și corect, dar urmat de un 0
.
Ai vreo idee de ce se întâmplă asta?
Este intenționat sau poate fi remediat?
add_action('wp_ajax_get_homepage', 'get_homepage');
add_action('wp_ajax_nopriv_get_homepage', 'get_homepage');
function get_homepage(){
echo "get_homepage ->";
exit();
}
Am citit la AJAX în Plugin-uri, dar de ce este necesar acest lucru?

Răspunsul implicit din admin-ajax.php
este,
die( '0' );
...prin adăugarea propriului tău wp_die()
sau exit()
sau die()
după returnarea conținutului dorit, previi returnarea răspunsului implicit din admin-ajax.php
.
De asemenea, în general, acest lucru înseamnă că apelul tău ajax a reușit.
În final, pentru a răspunde la întrebarea ta, acesta este comportamentul intenționat. Ceea ce faci prin încheierea după returnarea conținutului este lucrul corect de făcut.

Mulțumesc pentru explicație. Deci folosesc die() sau verific în interiorul ajax pentru 0 pentru a ști că totul a fost în regulă?

Folosește die()
sau exit()
după ce ai afișat conținutul/datele. În funcția de callback success/complete
a metodei tale ajax, poți apoi manipula datele și le poți folosi pentru a popula DOM-ul. Poți face și verificări suplimentare de erori pentru a valida integritatea datelor. De asemenea, poți face verificări de erori în funcția ta PHP de callback înainte de a afișa rezultatul. În esență, ieșirea după returnarea răspunsului va asigura că nu vei primi și 0
împreună cu el. Apropo, doar pentru că primești un răspuns 0
nu înseamnă că apelul tău ajax a fost 100% reușit. Totuși, este ușor de observat când inspectezi rezultatul.

@thrillcode dacă nu trebuie să expui procesul wp_die
altor plugin-uri sau cod de temă care se pot conecta la acest proces, atunci folosirea die
sau exit
este ok. Dacă intenționezi să lansezi codul tău ca Open Source sau în alt fel, unde codul tău trebuie să funcționeze armonios cu altele, atunci wp_die
ar fi de preferat, sunt de acord.
