Simple Working Example

In your php (html) page
  $AjaxUrlHtml = "var ajaxurl = '" . admin_url('admin-ajax.php') . "';";
  $AjaxNonce = wp_create_nonce( 'my-nonce-special-string' );
  
  $HtmlOutput .= <<<_END
  
  <div onclick="DoAjaxPost();" ></div>
  
  <script type="text/javascript" >
    $AjaxUrlHtml

    function DoAjaxPost() {
        var post_data = {
                   'action': 'my_ajax_action_callback',   //The name of the ajax callback action in functions.php
                   'security': '$AjaxNonce',
                   'my_value_1': 9876
        };

        jQuery.post(ajaxurl, post_data);
    }
  </script>

_END;
In functions.php
add_action ( 'wp_ajax_my_ajax_action_callback', 'my_ajax_action_callback' );        //For AJAX calls made for logged in users
add_action ( 'wp_ajax_nopriv_my_ajax_action_callback', 'my_ajax_action_callback' ); //For AJAX calls made from non logged in users
function my_ajax_action_callback()
{
  //Check the nonce
  check_ajax_referer('my-nonce-special-string', 'security');      //Nonces are tied to the user ID which is handled by php.  THis will die(); if the nonce check fails
  
  //$user_id = get_current_user_id();                             //Use this if your function wants the wordpress user_id (secure method, don't pass it as an ajax argument)

  if ($my_value_1 == 9876)
  {
    
    //Do something
    
  }
  
    wp_die();     //Terminate immediately and return a proper response
}
Feel free to comment if you can add help to this page or point out issues and solutions you have found. I do not provide support on this site, if you need help with a problem head over to stack overflow.

Comments

Your email address will not be published. Required fields are marked *