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
  <script type="text/javascript" >
  var Counter = 0;
      var post_data = {
                 'action': 'my_ajax_action_callback',   //The name of the ajax callback action in functions.php
                 'security': '$AjaxNonce',
                 'my_value_1': 9876
   , post_data, function(response) {
        response = $.parseJSON(response);     //Decode the json response
        document.getElementById('ajax_value1').innerHTML = Counter + '-' + response.ajax_value1 + '-' + response.ajax_value2 + '-' + response.ajax_value3;
  }, 1000);		 //<<<<Call every time in mS

<p>AJAX Output: <span id='ajax_value1'>Retreiving...</span></p>

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)

    $ajax_value1 = 1234;
    $ajax_value2 = sanitize_text_field($_POST['my_value_1']);
    $ajax_value3 = 'abcd';
    $ReturnArray = array(
                    "ajax_value1" => $ajax_value1,
                    "ajax_value2" => $ajax_value2,
                    "ajax_value3" => $ajax_value3
    echo json_encode($ReturnArray);
    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.


Your email address will not be published.