A $_POST should occur when submit form but is not?

Add this to functions.php

add_action('wp_ajax_post_language','post_language');

and then make either of following changes in your code.

Because your jquery code is sending FirstNM to server (not FirstName).
Therefore in post_language() function, change this line

$FirstName = isset( $_POST['FirstName'] ) ? $_POST['FirstName'] : '';

to

    $FirstName = isset( $_POST['FirstNM'] ) ? $_POST['FirstNM'] : '';

OR
Change 'FirstNM': FirstName, to 'FirstName': FirstName, in ajax call.

data: {
            'action': 'post_language',
            'FirstName': FirstName,     // 'FirstNM': FirstName,
        }

UPDATE:
Also remove this line,from post_language() function if yo have not defined alert() in your PHP It seems to be a JS function added to PHP by mistake, resulting in a PHP error.

    alert('post_language is called');