Ajax Post与GET

I am trying to implement an AJAX Example which perfectly works with the GET request, but I am not able to transmit via POST. What am I doing wrong ? The POST object received by PHP is always empty. Thanks for any advice!

HTML & JavaScript:

<html>
    <head>
        <title> Create a new user</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script>  

            function checkUser(){
                xhttp = new XMLHttpRequest();
                xhttp.open("POST","usercheck.php",true);

                                xhttp.onreadystatechange = function () {
                                    if (xhttp.readyState == 4 && xhttp.status == 200) {
                                        var data = xhttp.responseText;
                                        alert("Benutzer" + data);
                                    }
                                }
                                xhttp.send("username=" + encodeURIComponent(document.getElementById("username").value));
                            }

        </script>
    </head>
    <body>
        <p>User:</p><br> 
        <input type="text" id="username" name="username">
        <button onclick="checkUser();"> Check </button>
    </body>
</html>

PHP Code:

<?php

$usernames = array("admin", "gast", "paul");
$validate_pattern = "/^[a-z0-9]{4,20}$/";

if (!isset($_POST["username"])) {
    die("{valid:false,message:false}");
}

if (in_array($_POST["username"], $usernames)) {
    die("{valid:false,message:'Username is used!'}");
}

if (!preg_match($validate_pattern, $_POST["username"])) {
    die("{valid:false,message:'Username wrong.'}");
}
echo "{valid:true,message:false}";


 ?>

I found the bug in the code. I missed to set the request header, which was not part of the tutorial unfortunately: xhttp.setRequestHeader('Content-Type','x-www-form-urlencoded');