ajaxurl फ्रंट एंड पर परिभाषित नहीं है


25

मैं सामने की तरफ ajaxform बनाने की कोशिश कर रहा हूँ। मैं कोड का उपयोग कर रहा हूं

    jQuery.ajax(
        {
            type: "post",
            dataType: "json",
            url: ajaxurl,
            data: formData,
            success: function(msg){
                console.log(msg);
            }
        });

जिसके लिए मुझे त्रुटि हो रही है

Uncaught ReferenceError: ajaxurl is not definedworklorAjaxBookForm @ 
?page_id=2:291onclick @ ?page_id=2:202

व्यवस्थापक बैकएंड पर समान कोड का उपयोग करते समय। मुझे ajax अनुरोध को संसाधित करने के लिए किस url का उपयोग करना चाहिए?


इस ट्यूटोरियल की जाँच करें। यह आपकी मदद कर सकता है। 1stwebdesigner.com/implement-ajax-wordpress-themes
Nilambar

जवाबों:


48

बैकएंड में ajaxurlवर्डप्रेस द्वारा परिभाषित वैश्विक चर है।

यह चर WPend द्वारा दृश्यपटल में नहीं बनाया गया है। इसका मतलब है कि यदि आप फ्रंट में AJAX कॉल का उपयोग करना चाहते हैं, तो आपको इस तरह के वेरिएबल को खुद से परिभाषित करना होगा।

इसका उपयोग करने का अच्छा तरीका है wp_localize_script

मान लें कि आपकी AJAX कॉल my-ajax-script.jsफ़ाइल में हैं, तो इस JS फ़ाइल के लिए wp_localize_script जोड़ें जैसे:

function my_enqueue() {

    wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/js/my-ajax-script.js', array('jquery') );

    wp_localize_script( 'ajax-script', 'my_ajax_object',
            array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts', 'my_enqueue' );

अपनी JS फाइल को स्थानीय करने के बाद, आप my_ajax_objectअपनी JS फाइल में ऑब्जेक्ट का उपयोग कर सकते हैं :

jQuery.ajax(
    {
        type: "post",
        dataType: "json",
        url: my_ajax_object.ajax_url,
        data: formData,
        success: function(msg){
            console.log(msg);
        }
    });

2
क्या मैं उपयोग wp_localize_scriptकिए बिना उपयोग कर सकता हूं wp_enqueue_scritp?
dread_cat_pirate

1
आप wp_localize_script में स्क्रिप्ट हैंडल का उपयोग करते हैं, इसलिए आपको अपनी कम से कम एक स्क्रिप्ट के लिए wp_enqueue_script का उपयोग करना होगा। लेकिन ... wp_enqueue_script का उपयोग करना एक अच्छा विचार नहीं है (आप कुछ संघर्षों और निर्भरता की समस्याओं का जोखिम उठाते हैं)।
Krzysiek Dróżdż

मेरे पास लोड करने के लिए कोई बाहरी स्क्रिप्ट नहीं है, मैं सिर्फ अजाक्स कॉल करने के लिए ajaxurl का उपयोग करना चाहता हूं। क्या यह संभव नहीं है?
RT

और आप इस AJAX कॉल को कहां लगाएंगे? इनलाइन स्क्रिप्ट के रूप में? यह बहुत बुरा विचार है ...
Krzysiek Dróżd

मेरे पास एक अलग फ़ॉर्म है, जिसमें मैं सत्यापन का प्रबंध कर रहा हूं और सबमिट करने पर, एक अजाक्स कॉल को हुक जोड़कर निश्चित रूप से वर्डप्रेस तरीके से फॉर्म सबमिट करना है। वैसे भी मैं ajaxurl का उपयोग करने के लिए रास्ता निकाल लिया है।
RT

33

ajaxurl का सीधे उपयोग करने के लिए, अपनी प्लगइन फ़ाइल में इसे जोड़ें:

add_action('wp_head', 'myplugin_ajaxurl');

function myplugin_ajaxurl() {

   echo '<script type="text/javascript">
           var ajaxurl = "' . admin_url('admin-ajax.php') . '";
         </script>';
}

फिर आप ajaxurlajax अनुरोध के लिए उपयोग कर सकते हैं।


1
यह उत्तर ajaxurlसमान रूप से डिफ़ॉल्ट उपयोग के समान है। जो स्वीकृत उत्तर की तुलना में बहुत बेहतर है।
हाबिल मेलक्विड्स कैलेजो

सच है, लेकिन यह बेकार है यदि आप इसे एक .js फ़ाइल में उपयोग कर रहे हैं।
जूल्स

1
@ जूल्स ajaxurlअभी भी एक *.jsफाइल में उपलब्ध है । ऐसा करने के लिए, आपको ajaxurlपृष्ठ लोड पर जल्दी चर घोषित करने की आवश्यकता हो सकती है । एक और बात पर विचार करने के लिए आप की बाहरी *.jsफ़ाइल की कॉलिंग है । बाहरी फ़ाइल बुलाया जाना चाहिए के बादajaxurl instantiated किया गया है और सही URL मूल्य दिया जाना चाहिए।
हाबिल मेलक्विड्स कैलेजो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.