Perché WordPress aggiunge uno 0 (zero) alla risposta Ajax?
A meno che non termini la funzione di elaborazione Ajax con exit()
o die()
, la funzione Ajax riceve l'output desiderato e corretto ma seguito da 0
.
Qualcuno sa perché succede questo?
È previsto che sia così o si può risolvere?
add_action('wp_ajax_get_homepage', 'get_homepage');
add_action('wp_ajax_nopriv_get_homepage', 'get_homepage');
function get_homepage(){
echo "get_homepage ->";
exit();
}
Ho letto su AJAX nei Plugin, ma perché è necessario?

La risposta predefinita da admin-ajax.php
è,
die( '0' );
...aggiungendo il tuo wp_die()
o exit()
o die()
dopo aver restituito il contenuto desiderato, previeni che venga restituita anche la risposta predefinita di admin-ajax.php
.
Inoltre, generalmente significa che la tua chiamata ajax è andata a buon fine.
In definitiva, per rispondere alla tua domanda, è previsto che funzioni così. Ciò che stai facendo terminando l'esecuzione dopo aver restituito il tuo contenuto è la cosa giusta da fare.

Grazie per la spiegazione. Quindi devo usare die() o controllo all'interno dell'ajax per 0 per sapere che tutto è andato bene?

Usa die()
o exit()
dopo aver fatto echo del tuo contenuto/dati. Nella funzione di callback success/complete
del tuo metodo ajax, puoi poi manipolare i dati e usarli per popolare il DOM. Puoi anche fare ulteriori controlli degli errori per validare l'integrità dei dati. Puoi anche fare il controllo degli errori nella tua funzione di callback PHP prima dell'output. In sostanza, uscire dopo aver restituito la risposta garantirà che non riceverai anche lo 0
insieme ad essa. A proposito, solo perché ricevi una risposta 0
non significa che la tua chiamata ajax sia andata a buon fine al 100%. Tuttavia è facile capirlo quando ispezioni l'output.

@thrillcode a meno che tu non abbia bisogno di esporre il processo di wp_die
ad altri plugin o al codice del tema che può agganciarsi a detto processo, allora usare die
o exit
va bene. Se intendi rilasciare il tuo codice come open source o in altri contesti dove il tuo codice deve funzionare bene con altri, allora wp_die
sarebbe preferibile, siamo d'accordo.
