ajaxurl সম্মুখ প্রান্তে সংজ্ঞায়িত করা হয়নি


25

আমি সামনের দিকে একটি অজ্যাক্সফর্ম তৈরি করার চেষ্টা করছি। আমি কোড ব্যবহার করছি

    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

প্রশাসক ব্যাকএন্ডে অনুরূপ কোড ব্যবহার করার সময় কাজ করে। এজাক্স অনুরোধটি প্রক্রিয়া করতে আমার কোন ইউআরএল ব্যবহার করা উচিত?


এই টিউটোরিয়াল পরীক্ষা করে দেখুন। এটি আপনাকে সাহায্য করতে পারে। 1stwebdesigner.com/implement-ajax-wordpress-themes
নীলাম্বর শর্মা

উত্তর:


48

ব্যাকএন্ডে ajaxurlওয়ার্ডপ্রেস নিজেই দ্বারা সংজ্ঞায়িত বৈকল্পিক রয়েছে।

এই ভেরিয়েবলটি ফ্রন্টএন্ডে ডাব্লুপি তৈরি করে না। এর অর্থ হল আপনি যদি অজ্যাক্স কলগুলি সম্মুখভাগে ব্যবহার করতে চান তবে আপনাকে নিজের দ্বারা এ জাতীয় পরিবর্তনশীলটি সংজ্ঞায়িত করতে হবে।

এটি করার ভাল উপায় হ'ল ব্যবহার করা wp_localize_script

আসুন ধরে নেওয়া যাক আপনার AJAX কলগুলি my-ajax-script.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' );

আপনার জেএস ফাইল স্থানীয়করণের পরে, আপনি my_ajax_objectআপনার জেএস ফাইলটিতে অবজেক্টটি ব্যবহার করতে পারেন :

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?
ভয়_কাট_ জলদস্যু

1
আপনি wp_localize_script এ স্ক্রিপ্ট হ্যান্ডেল ব্যবহার করেন, সুতরাং আপনার কমপক্ষে একটি স্ক্রিপ্টের জন্য আপনাকে wp_enqueue_script ব্যবহার করতে হবে। তবে ... wp_enqueue_script ব্যবহার না করা ভাল ধারণা নয় (আপনি কিছু বিবাদ এবং নির্ভরতার সমস্যার ঝুঁকি নিয়ে যান)।
Krzysiek Dróżdż

আমার লোড করার জন্য কোনও বাহ্যিক স্ক্রিপ্ট নেই, আমি কেবল একটি এজ্যাক্স কল করতে এজ্যাকারল ব্যবহার করতে চাই। এটা কি সম্ভব নয়?
আরটি

এবং আপনি এই এজেএক্স কলটি কোথায় রাখবেন? ইনলাইন স্ক্রিপ্ট হিসাবে? এটি খুব খারাপ ধারণা ...
ক্রিজিসিক দ্রাদ্দে

আমি একটি পৃথক ফর্ম করেছি, এতে আমি বৈধতা পরিচালনা করছি এবং জমা দেওয়ার সময় হুক যুক্ত করে অবশ্যই ওয়ার্ডপ্রেস পদ্ধতিতে ফর্ম জমা দেওয়ার জন্য একটি এজ্যাক্স কল করব। যাইহোক আমি আজাকুরল ব্যবহারের উপায়টি বের করেছি।
আরটি

33

সরাসরি আপনার প্লাগইন ফাইলে এজাকুরল ব্যবহার করতে এটি যুক্ত করুন:

add_action('wp_head', 'myplugin_ajaxurl');

function myplugin_ajaxurl() {

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

তারপরে আপনি ajaxurlএজাক্স অনুরোধের জন্য ব্যবহার করতে পারেন ।


1
এই উত্তরটি ajaxurlএকইভাবে ডিফল্ট ব্যবহারের মতো করে তোলে । যা গৃহীত উত্তরের চেয়ে অনেক ভাল।
আবেল মেলকুইয়েডেস ক্যালেজো

সত্য, তবে এটি অকেজো যদি আপনি এটি একটি জেএস ফাইল ব্যবহার করেন।
জুলাই

1
@ জুলস ajaxurlএকটি *.jsফাইল এখনও পাওয়া যায় । এটি করার জন্য, আপনাকে ajaxurlপৃষ্ঠা লোডের প্রথমদিকে ভেরিয়েবল ঘোষণা করতে হতে পারে । আরেকটি বিষয় বিবেচনা করা হ'ল আপনার বাহ্যিক *.jsফাইলের কল । বাহ্যিক ফাইলটি এফএনটি ইনস্ট্যান্ট হয়ে যাওয়ার পরে বলা উচিত ajaxurlএবং সঠিক URL মান দেওয়া উচিত।
আবেল মেলকুইয়েডেস ক্যাল্লেজো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.