De ce WordPress adaugă 0 (zero) la un răspuns Ajax?

4 oct. 2013, 14:58:44
Vizualizări: 18K
Voturi: 22

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?

2
Comentarii

Se întâmplă asta (adaugarea lui 0) chiar și dacă ești deconectat de la WordPress?

murdaugh murdaugh
4 oct. 2013 15:06:31

Da, chiar dacă nu sunt autentificat în WordPress.

Radek Radek
4 oct. 2013 15:14:56
Toate răspunsurile la întrebare 1
4
40

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.

4 oct. 2013 15:43:29
Comentarii

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

Radek Radek
5 oct. 2013 04:12:49

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.

Adam Adam
5 oct. 2013 04:26:35

Ar trebui să folosești wp_die() adăugat în versiunea 2.0.4

thrillcode thrillcode
28 apr. 2018 07:31:17

@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.

Adam Adam
29 apr. 2018 11:12:25