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" >
$AjaxUrlHtml
var Counter = 0;
setInterval(function()
{
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, function(response) {
//----- CALLBACK SUCCESS - RESPONSE RECEVIED -----
response = $.parseJSON(response); //Decode the json response
Counter++;
document.getElementById('ajax_value1').innerHTML = Counter + '-' + response.ajax_value1 + '-' + response.ajax_value2 + '-' + response.ajax_value3;
});
}, 1000); //<<<<Call every time in mS
</script>
<p>AJAX Output: <span id='ajax_value1'>Retreiving...</span></p>
_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)
$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.