Mengapa WordPress menambahkan 0 (nol) ke respons Ajax?

16

Kecuali saya mengakhiri fungsi pemrosesan Ajax oleh exit()atau die(), fungsi Ajax menerima output yang diinginkan dan benar tetapi diikuti oleh 0.

Adakah yang tahu mengapa hal itu terjadi?

Apakah itu dimaksudkan seperti itu atau bisa diperbaiki?

add_action('wp_ajax_get_homepage', 'get_homepage');
add_action('wp_ajax_nopriv_get_homepage', 'get_homepage');

function get_homepage(){
    echo "get_homepage ->";
    exit();
}

Saya sudah membaca di AJAX dalam Plugin , tetapi mengapa itu perlu?

Radek
sumber
Apakah itu (penambahan 0) terjadi bahkan jika Anda keluar dari wordpress?
murdaugh
Ya, bahkan jika saya tidak masuk ke WordPress.
Radek

Jawaban:

31

Respons default dari admin-ajax.phpadalah,

die( '0' );

... dengan menambahkan milik Anda wp_die()atau exit()atau die()setelah mengembalikan konten yang Anda inginkan, juga mencegah respons default untuk admin-ajax.phpdikembalikan.

Secara umum ini juga berarti bahwa panggilan ajax Anda telah berhasil.

Pada akhirnya, untuk menjawab pertanyaan Anda, itu dimaksudkan untuk bekerja dengan cara ini. Apa yang Anda lakukan dengan keluar setelah mengembalikan konten Anda adalah hal yang benar untuk dilakukan.

Adam
sumber
Terima kasih atas penjelasannya. Jadi apakah saya menggunakan die () atau saya periksa di dalam ajax untuk 0 untuk mengetahui bahwa semuanya baik-baik saja?
Radek
2
Gunakan die()atau exit()setelah Anda menggemakan konten / data Anda. Dalam success/completefungsi panggilan balik metode ajax Anda, Anda kemudian dapat memanipulasi data dan menggunakannya untuk mengisi DOM. Anda juga dapat melakukan pengecekan kesalahan tambahan untuk memvalidasi integritas data. Anda juga dapat melakukan pengecekan kesalahan pada fungsi panggilan balik PHP Anda sebelum mengeluarkan. Pada dasarnya keluar setelah mengembalikan respons Anda akan memastikan Anda tidak 0cocok dengannya. Ngomong-ngomong hanya karena Anda menerima 0respons tidak berarti panggilan ajax Anda 100% berhasil. Namun mudah untuk mengetahui kapan Anda memeriksa output Anda.
Adam
1
Anda harus menggunakan wp_die()ditambahkan dalam 2.0.4
thrillcode
@thrillcode kecuali Anda perlu memaparkan proses wp_dieke plugin lain atau kode tema yang dapat menghubungkan ke proses tersebut, kemudian, menggunakan dieatau exitok. Jika Anda bermaksud merilis kode Anda sebagai OSS atau yang lainnya, di mana kode Anda perlu bermain baik dengan orang lain, maka wp_dieakan lebih disukai, disepakati.
Adam