ผู้ดูแลระบบขออาแจ็กซ์กลับ 0 ด้วยตาย ()


10

ดังนั้นฉันใช้การกำหนดค่านี้สำหรับการโทร AJAX ในพื้นที่การดูแล ( เช่นนี้ ):

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

มันเป็นแค่รหัสทดสอบ แต่จะคืนค่า 0 เสมอแทนที่จะเป็นสตริง "attivato" นอกจากนี้ยังค้นหา URL ajax อย่างถูกต้องโดยไม่มีข้อผิดพลาด 404
อะไรคือปัญหา?


คุณเคยพบปัญหานี้หรือไม่ ถ้าเป็นเช่นนั้นคุณสามารถแสดงความคิดเห็น (หรือยอมรับ) คำตอบที่แก้ไขปัญหาของคุณ? หากสิ่งเหล่านี้ไม่ได้แก้ปัญหาของคุณและได้รับการแก้ไขแล้วคุณช่วยเพิ่มคำตอบด้านล่างได้ไหม ขอบคุณ!
jmort253

@ jmort253 สวัสดีขอโทษที่ตอบคุณตอนนี้ แต่ในขณะนี้ฉันยังมีปัญหานี้อยู่และฉันไม่พบวิธีแก้ปัญหาในเว็บ: '(ฉันกำลังทำงานอยู่เมื่อฉันมีเวลาว่างถ้าฉันหาวิธีแก้ปัญหา ฉันจะเขียนที่นี่;)
Ivano Mercuri

ตกลงเหมือนกันที่นี่ ถ้าฉันคิดออกฉันจะโพสต์ :) ติดต่อกัน
jmort253

1
ฉันแก้ไขปัญหาส่วนต่อท้ายของส่วนwp_ajax_my_action"my_action" ต้องตรงกับการกระทำที่ใช้ในโพสต์ jQuery ฉันเห็นว่าคุณตรงกันดังนั้นจึงไม่ใช่ปัญหาในกรณีของคุณ ฉันยังให้มันทำงานได้จากหน้าผู้ดูแลระบบซึ่งเป็นสิ่งที่คุณพยายามทำ คุณเข้าสู่ระบบเมื่อพยายามโทร ajax นี้หรือไม่? หรือคุณออกจากระบบ?
jmort253

ขวา. ไม่ได้สังเกตว่า! ;)
Rutwick Gangurde

คำตอบ:


21

เพิ่มสิ่งนี้เช่นกัน: add_action('wp_ajax_nopriv_my_action', 'my_action_callback');. noprivแจ้งให้ทราบล่วงหน้า

มันจะแก้ปัญหาของคุณ!


2
ฉันแก้ไขสิ่งนี้ด้วยการทำให้แน่ใจว่าส่วนต่อท้ายของ "wp_ajax_SUFFIX" ตรงกับการกระทำเพื่อให้การดำเนินการในโพสต์ jQuery เป็น "SUFFIX" อย่างไรก็ตามฉันไม่จำเป็นต้องใช้ nopriv ... ไม่แน่ใจว่านี่เป็นคำตอบของปัญหา op หรือไม่เนื่องจากนี่เป็นการกระทำที่เกิดขึ้นในหน้าผู้ดูแลระบบซึ่งหมายความว่าคุณเข้าสู่ระบบแล้วซึ่งหมายความว่าคุณเข้าสู่ระบบแล้ว ไม่จำเป็นต้องลงทะเบียนเครื่องมือจัดการ nopriv ...
jmort253

15

ผมมีปัญหาเดียวกัน. สารละลาย:

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

หากคุณไม่ได้เพิ่มทั้ง (โดยมีและไม่มี nopriv) มันจะใช้ได้ทั้งในโหมดลงชื่อเข้าใช้หรือโหมดออกจากระบบเท่านั้น nopriv สำหรับการออกจากระบบส่วนอีกอันสำหรับการลงชื่อเข้าใช้


4

ไม่แน่ใจว่านี่เป็นปัญหาของคุณหรือไม่ แต่ฉันได้รับคำตอบแค่ "0" และใช้เวลานานที่สุดในการคิดออก นอกเหนือจากการทำให้แน่ใจว่าคุณวางexitหรือdieสิ้นสุดฟังก์ชัน php ของคุณแล้วฉันพบว่าคุณต้องวางadd_action('wp_ajax_...บิตของคุณไว้ที่ระดับบนสุดของปลั๊กอิน ฉันมีมันซ้อนอยู่ในadmin_menuเบ็ดของฉันซึ่งไม่ทำงาน ฉันไม่แน่ใจว่ารหัสของคุณข้างต้นเป็นส่วนหนึ่งของการรวมภายในฟังก์ชั่นจากไฟล์ php ปลั๊กอินระดับบนสุดของคุณ (เหมือนของฉัน)


1
ปัญหาเดียวกันที่นี่ .. ไม่แน่ใจว่าจะแก้ไขปัญหาประเภทนี้อย่างไรเนื่องจากบางครั้งเราจำเป็นต้องใส่การตอบสนอง ajax ภายในหรือที่ส่วนท้ายของรหัส
Ari
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.