1) Setup Form
<form action="">
<input type="text" name="email">
<input type="hidden" name="action" value="my-action">
<button type="submit">Submit</button>
</form>
2) Setup Javascript
Add localize script:
wp_localize_script( 'theme-javascript', 'AJAX', [
'URL' => admin_url('admin-ajax.php')
]);
global comment:
/* global AJAX */
$form.submit(function(e) {
e.preventDefault();
$.post(AJAX.URL, $form.serialize(), function(res) {
if ( !res.success ) {
console.log( res );
return;
}
// success
console.log( res );
});
});
3) Setup AJAX Handlers
function handle_my_action() {
$email = $_POST['email'];
wp_send_json_success($email);
}
add_action('wp_ajax_my-action', 'handle_my_action');
add_action('wp_ajax_nopriv_my-action', 'handle_my_action');