व्यवस्थापक ajax अनुरोध 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 वापस करता है। यह भी अजाक्स यूआरएल को सही ढंग से ढूंढता है, 404 त्रुटि के बिना।
समस्या क्या है?


क्या आपको कभी इस समस्या का पता चला? यदि हां, तो क्या आप उस जवाब पर टिप्पणी कर सकते हैं (या स्वीकार कर सकते हैं) जिसने आपकी समस्या हल कर दी है? यदि इनमें से कोई भी आपकी समस्या को हल नहीं करता है और इसे हल किया जाता है , तो क्या आप नीचे एक उत्तर जोड़ सकते हैं? धन्यवाद!
jmort253

@ jmort253 हाय, अभी आपको जवाब देने के लिए खेद है, लेकिन फिलहाल, मुझे अभी भी यह समस्या है और मुझे वेब के आसपास कोई समाधान नहीं मिला: '(मैं कुछ खाली समय होने पर इस पर काम कर रहा हूं; यदि मुझे समाधान मिल जाए; , मैं यहाँ लिखूंगा;)
इवानो मर्करी

यहाँ भी वही हालचाल। अगर मैं इसका पता लगाता हूं, तो पोस्ट करूंगा। :) संपर्क में रहना।
jmort253

1
मैंने अपनी समस्या को हल किया wp_ajax_my_action, "my_action" भाग के प्रत्यय को jQuery पोस्ट में उपयोग की गई क्रिया से मेल खाना चाहिए। मैं देखता हूं कि आपका मेल खाता है, इसलिए आपके मामले में यह समस्या नहीं है। मेरे पास यह एडमिन पेज से भी काम कर रहा है, जो आप करना चाह रहे हैं। क्या आप इस ajax कॉल करने का प्रयास करते समय लॉग इन हैं? या आप लॉग आउट हैं?
jmort253

सही। ध्यान नहीं दिया! ;)
रुटविक गांगुर्ड

जवाबों:


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 साइन आउट के लिए है, दूसरा साइन इन करने के लिए है।


4

यकीन नहीं होता कि यह आपकी समस्या है, लेकिन मुझे सिर्फ "0" की प्रतिक्रिया मिल रही थी और मुझे इसका पता लगाने में सबसे लंबा समय लगा। यह सुनिश्चित करने के अलावा कि आप अपने php फ़ंक्शन के अंत में हैं exitया नहीं die, मुझे पता चला कि आपको add_action('wp_ajax_...अपने प्लगइन के शीर्ष स्तर पर अपना बिट लगाना होगा । मेरे पास मेरे admin_menuहुक के अंदर घोंसला था , जो काम नहीं करता था। मुझे यकीन नहीं है कि यदि आपका ऊपर का कोड आपके शीर्ष स्तर प्लगइन फ़ाइल (जैसे मेरा था) से एक फ़ंक्शन के अंदर शामिल है।


1
यहाँ एक ही समस्या है .. इस तरह के मुद्दे को कैसे ठीक किया जाए, यह निश्चित नहीं है, क्योंकि हमें कभी-कभी कोड के अंतिम भाग के अंदर या आसपास ajax प्रतिक्रिया देने की आवश्यकता होती है।
अरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.