Wordpress - Ajaxurl Not Defined On Front End


Answer :

In backend there is global ajaxurl variable defined by WordPress itself.

This variable is not created by WP in frontend. It means that if you want to use AJAX calls in frontend, then you have to define such variable by yourself.

Good way to do this is to use wp_localize_script.

Let's assume your AJAX calls are in my-ajax-script.js file, then add wp_localize_script for this JS file like so:

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' ); 

After localizing your JS file, you can use my_ajax_object object in your JS file:

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

to use ajaxurl directly, in your plugin file add this:

add_action('wp_head', 'myplugin_ajaxurl');  function myplugin_ajaxurl() {     echo '<script type="text/javascript">            var ajaxurl = "' . admin_url('admin-ajax.php') . '";          </script>'; } 

you can then use the ajaxurl for ajax request.


Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable