Проблема Ваша вот в этой строке
if (isset($_POST['name'])) {echo json_encode($_POST['name']);}
Вы передаете на сервер не форму а контент в виде JSON который PHP не декодирует в $_POST
Более того должны получать warning по поводу того что "Populating raw post data is deprecated"
Для того чтобы Вам получить на сервере сырые данные надо забрать их, например вот так:
$data = file_get_contents('php://input');
А чтобы не получать ошибок надо в php.ini проставить
always_populate_raw_post_data = -1
А с Ванильным JS все хорошо.