Код взят из видеоурока, или слеплен из разных копипаст?
В чём вообще заключается смысл передавать заголовок
Content-Type: application/x-www-form-urlencoded
, но сами данные передавать в формате
multipart/form-data
через объект FormData?
В
документации к FormData не сказано, что заголовок надо переопределять, браузер сам назначит нужный заголовок при отправке, вы только сломаете, если замените его на свой, не соответствующий правде (ибо в PHP нет сомнительных механизмов типа content-type sniffing, как браузер скажет - так он и будет разбирать входные данные безо всякой импровизации и угадайки).
Если код из видеоурока, то пристрелите автора, чтобы не советовал всякую чушь, а если из копипаст, то анализируйте каждую строку кода, а не пихайте бездумно, не зная, что она делает.