Jadi saya menggunakan konfigurasi ini untuk panggilan AJAX di wilayah administrasi ( seperti ini ):
add_action( 'admin_head', 'ajaxPerNgg' );
function ajaxPerNgg(){ ?>
<script type="text/javascript" >
jQuery(document).ready(function() {
jQuery("#message").remove();
jQuery("#errore a#attivo").click(
function(){
var data = {
action: 'my_action'
};
jQuery.post(ajaxurl, data, function(response) {
if(response == "attivato")
jQuery("#errore a#inattivo").attr("id","completato").html("Attivato");
else
jQuery("#errore a#inattivo").attr("id","attivo").html("Attivalo ora");
});
}
);
});
</script>
<?php }
add_action('wp_ajax_my_action', 'my_action_callback');
function my_action_callback() {
echo 'attivato';
die();
}
Ini hanya kode tes, tetapi selalu mengembalikan 0 bukannya string "attivato". Juga menemukan url ajax dengan benar, tanpa kesalahan 404.
Apa masalahnya?
wp_ajax_my_action
bagian "my_action", harus cocok dengan tindakan yang digunakan dalam posting jQuery. Saya melihat bahwa Anda cocok, jadi itu bukan masalah dalam kasus Anda. Saya juga membuatnya bekerja dari halaman admin, yang sedang Anda coba lakukan. Apakah Anda masuk saat mencoba melakukan panggilan ajax ini? Atau Anda keluar?Jawaban:
Menambahkan ini juga:
add_action('wp_ajax_nopriv_my_action', 'my_action_callback');
. Perhatikannopriv
.Itu akan menyelesaikan masalah Anda!
sumber
Saya memiliki masalah yang sama. Larutan:
Jika Anda tidak menambahkan keduanya (dengan dan tanpa nopriv) itu akan berfungsi baik dalam mode masuk atau mode keluar saja. nopriv untuk keluar, yang lain untuk masuk.
sumber
Tidak yakin apakah ini masalah Anda, tapi saya mendapat respons hanya "0" dan saya butuh waktu paling lama untuk mengetahuinya. Selain memastikan Anda meletakkan
exit
ataudie
pada akhir fungsi php Anda, saya menemukan bahwa Anda harus meletakkanadd_action('wp_ajax_...
bit Anda di tingkat atas plugin Anda. Saya memilikinya bersarang di dalamadmin_menu
kait saya , yang tidak berhasil. Saya tidak yakin apakah kode Anda di atas adalah bagian dari sertakan di dalam fungsi dari file php plugin tingkat atas Anda (seperti milik saya sebelumnya).sumber