Server side :
function fn(){
header( 'Content-Type: application/json; charset=utf-8' );
echo json_encode( 'some response' );
// don't forget this one below :
exit();
}
add_action( 'wp_ajax_actionname', 'fn' );
// add below for unlogged user add
add_action( 'wp_ajax_nopriv_actionname', 'fn' );
Client side :
const url = siteURL + '/wp-admin/admin-ajax.php?action=actionname';
fetch(url)
.then(response => response.json())
.then(result => console.log(result));