Die ile yönetici ajax istek dönüş 0 ()


10

Bu yüzden yönetim alanında bir AJAX çağrısı için bu yapılandırmayı kullanıyorum ( böyle ):

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();
}

Sadece bir test kodu, ama her zaman "attivato" dizesi yerine 0 döndürür. Ayrıca ajax url'yi 404 hatası olmadan doğru bir şekilde bulur.
Sorun nedir?


Hiç bu sorunu çözdünüz mü? Öyleyse, lütfen sorununuzu çözen yanıtı yorumlayabilir (veya kabul edebilirsiniz)? Bunların hiçbiri sorununuzu çözmediyse ve çözüldüyse , lütfen aşağıya bir cevap ekleyebilir misiniz? Teşekkür ederim!
jmort253

@ jmort253 merhaba, şu anda size cevap verdiğim için üzgünüm, ama şu anda hala bu problemim var ve web çevresinde bir çözüm bulamadım: '(boş zamanım olduğunda üzerinde çalışıyorum; çözümü bulursam , buraya yazacağım;)
Ivano Mercuri

Tamam burada da aynı. Eğer çözersem gönderirim. :) İrtibatta olalım.
jmort253

1
wp_ajax_my_actionSorunumu çözdüm, "my_action" kısmının soneki jQuery yazısında kullanılan eylemle eşleşmelidir. Seninkinin uyuştuğunu görüyorum, yani senin durumundaki sorun bu değil. Ayrıca yapmaya çalıştığınız yönetici sayfasından da çalıştırıyorum. Bu ajax çağrısını yapmaya çalışırken giriş yaptınız mı? Yoksa çıkış yaptınız mı?
jmort253

Sağ. Fark etmedim! ;)
Rutwick Gangurde

Yanıtlar:


21

De bu ekleyin: add_action('wp_ajax_nopriv_my_action', 'my_action_callback');. Dikkat edin nopriv.

Sorununuzu çözecek!


2
Ben "wp_ajax_SUFFIX" soneki eylem ile eşleşmesini sağlayarak düzeltildi, böylece jQuery yazı eylem "SUFFIX" oldu. Ancak, nopriv kullanmama gerek yoktu ... Bu op sorununun cevabı olup olmadığından emin değilim, çünkü bu yönetici sayfasında gerçekleşen bir eylemdir, bu da giriş yaptığınız anlamına gelir, bu da sizi önerir bir nopriv işleyicisi kaydetmeye gerek yok ...
jmort253

15

Ben de aynı problemi yaşadım. Çözüm:

add_action('wp_ajax_nopriv_my_action', 'my_action_callback');
add_action('wp_ajax_my_action', 'my_action_callback');

Her ikisini de eklemezseniz (nopriv ile veya nopriv olmadan) ya oturum açmış modda ya da oturumu kapatılmış modda çalışır. nopriv oturumu kapatmış, diğeri oturumu kapatmış.


4

Bu senin sorunun olup olmadığından emin değilim, ama sadece "0" cevabını alıyordum ve bunu çözmem en uzun zamanımı aldı. Bir yana koymak emin olun exitya da diephp işlevi sonunda, ben senin add_action('wp_ajax_...bit eklentinizin en üst düzeyde koymak zorunda öğrendim . Ben admin_menuişe yaramadı kanca içinde yuvalanmış vardı . Yukarıdaki kod en üst düzey eklenti php dosyasından (benim gibi) bir işlev içinde bir dahil olup olmadığını emin değilim.


1
Burada aynı sorun .. Bazen bu tür bir sorunun nasıl çözüleceğinden emin değilsiniz, çünkü bazen ajax yanıtını kodların içine veya sonuna koymamız gerekir.
Ari
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.