Perché WordPress aggiunge uno 0 (zero) alla risposta Ajax?

4 ott 2013, 14:58:44
Visualizzazioni: 18K
Voti: 22

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?

2
Commenti

Succede (l'aggiunta dello 0) anche se sei disconnesso da WordPress?

murdaugh murdaugh
4 ott 2013 15:06:31

Sì, anche se non sono loggato in WordPress.

Radek Radek
4 ott 2013 15:14:56
Tutte le risposte alla domanda 1
4
40

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.

4 ott 2013 15:43:29
Commenti

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

Radek Radek
5 ott 2013 04:12:49

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.

Adam Adam
5 ott 2013 04:26:35

Dovresti usare wp_die() aggiunto nella versione 2.0.4

thrillcode thrillcode
28 apr 2018 07:31:17

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

Adam Adam
29 apr 2018 11:12:25