PHP получает пустые переменные $ _POST из вызова Ajax

Я пытаюсь отправить данные формы в скрипт PHP, используя вызов AJAX. Я сериализую данные формы и отправляю ее как переменную JSON методом POST в PHP-скрипт. Переменная данных Ajax кажется правильной, но по какой-то причине массив PHP $ _POST пуст, и мне трудно понять, что я делаю неправильно здесь.

Это мой вызов ajax

// AJAX var input_data = $('#contact-form').serialize(); event.preventDefault(); $.ajax({ url: 'contact.php', type:'POST', dataType:'json',//return type from server side function [return it as JSON object] contentType: "application/json", data: input_data, //Pass the data to the function on server side success: function (data) { //Array of data returned from server side function $.each(data,function(index){ alert(data[index]); // used for debugging, returns 1 }); } }); alert("called"); if(input_data.length < 1) { alert("empty"); alert(input_data); } else { alert("not empty"); alert(input_data); } return false; 

форма

 <form class="text-center" id="contact-form" method="POST" action="contact.php"> <div class="form-group"> <input type="text" class="form-control" id="name" name="name" placeholder="Name"> </div> <div class="form-group"> <input type="email" class="form-control" id="email" name="email" placeholder="Email"> </div> <div class="form-group"> <textarea class="form-control" rows="5" id="msg" name="msg" placeholder="Type your message"></textarea> </div> <div class="form-group"> <div class="g-recaptcha buffer" data-sitekey="some_key" data-callback="recaptcha_callback"></div> <input type="hidden" class="hiddenRecaptcha required" name="hiddenRecaptcha" id="hiddenRecaptcha"> </div> <button type="submit" class="btn btn-lg btn-primary text-uppercase buffer">Send message</button> </form> 

И, наконец, мой скрипт contact.php

 <?php header('Content-Type: application/json'); $name; $email; $msg; $nameErr = $emailErr = $msgErr = 0; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = 1; } else { $name = $_POST["name"]; $nameErr = 0; } if (empty($_POST["email"])) { $emailErr = 1; } else { $email = $_POST["email"]; if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) { $emailErr = 0; } else { $emailErr = 1; } } if (empty($_POST["msg"])) { $msgErr = 1; } else { $msg = $_POST["msg"]; $msgErr = 0; } if($nameErr == 0 && $emailErr == 0 && $msgErr == 0) { $to = "example@example.com"; $subject = 'Contact request - site'; $txt = $_POST['msg']; $headers = "From: " . $_POST['email'] . "\r\n"; mail($to,$subject,$txt,$headers); echo json_encode(array("sent")); } else { echo json_encode(array($nameErr, $emailErr, $msgErr)); } } else { echo json_encode(array("post_error")); } ?> по <?php header('Content-Type: application/json'); $name; $email; $msg; $nameErr = $emailErr = $msgErr = 0; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = 1; } else { $name = $_POST["name"]; $nameErr = 0; } if (empty($_POST["email"])) { $emailErr = 1; } else { $email = $_POST["email"]; if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) { $emailErr = 0; } else { $emailErr = 1; } } if (empty($_POST["msg"])) { $msgErr = 1; } else { $msg = $_POST["msg"]; $msgErr = 0; } if($nameErr == 0 && $emailErr == 0 && $msgErr == 0) { $to = "example@example.com"; $subject = 'Contact request - site'; $txt = $_POST['msg']; $headers = "From: " . $_POST['email'] . "\r\n"; mail($to,$subject,$txt,$headers); echo json_encode(array("sent")); } else { echo json_encode(array($nameErr, $emailErr, $msgErr)); } } else { echo json_encode(array("post_error")); } ?> 

При запуске PHP-кода электронная почта отправляется правильно. При использовании вызова Ajax массив $ _POST пуст и отправляет обратно три кода ошибки из последнего оператора if в PHP-коде. Кроме того, если есть лучший способ сделать это, я был бы более чем счастлив увидеть альтернативу. Я ценю любую помощь, спасибо.

EDIT: данные JSON

json_data