Perché WordPress aggiunge 0 (zero) a una risposta Ajax?


16

A meno che non concluda la funzione di elaborazione Ajax da exit()o die(), la funzione Ajax riceve l'output desiderato e corretto ma seguito da 0.

Qualche idea sul perché accada?

È pensato per essere così o potrebbe essere risolto?

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 in Plugin , ma perché è necessario?


Succede (l'aggiunta di 0) anche se sei disconnesso da wordpress?
Murdaugh,

Sì, anche se non ho effettuato l'accesso a WordPress.
Radek,

Risposte:


31

La risposta predefinita da admin-ajax.phpè,

die( '0' );

... aggiungendo il proprio wp_die()o il exit()o die()dopo il ritorno tuoi impedisce contenuto desiderato la risposta predefinita da admin-ajax.phpessere restituiti pure.

Generalmente significa anche che la tua chiamata Ajax è riuscita.

In definitiva, per rispondere alla tua domanda, è pensato per funzionare in questo modo. Quello che stai facendo uscendo dopo aver restituito i tuoi contenuti è la cosa giusta da fare.


Grazie per la spiegazione. Quindi uso die () o controllo all'interno di ajax per 0 per sapere che era tutto a posto?
Radek,

2
Usa die()o exit()dopo aver ripetuto i tuoi contenuti / dati. Nella success/completefunzione di callback del tuo metodo ajax, puoi quindi manipolare i dati e usarli per popolare il DOM. È inoltre possibile eseguire qualsiasi controllo degli errori aggiuntivo per convalidare l'integrità dei dati. Puoi anche fare un controllo degli errori nella tua funzione di callback PHP prima dell'output. Essenzialmente uscire dopo aver restituito la risposta ti garantirà di non andare d' 0accordo anche con esso. A proposito, solo perché ricevi una 0risposta non significa che la tua chiamata Ajax abbia avuto successo al 100%. Tuttavia, è facile dirlo quando si controlla l'output.
Adam

1
Dovresti usare wp_die()aggiunto in 2.0.4
thrillcode il

@thrillcode a meno che non sia necessario esporre il processo wp_diead altri plugin o codice tema che possono agganciarsi a detto processo, quindi, usando dieo exitè ok. Se hai intenzione di rilasciare il tuo codice come OSS o in altro modo, dove il tuo codice deve funzionare bene con gli altri, wp_diesarebbe più preferibile, d'accordo.
Adam,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.