Потому что заголовок устанавливаете
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
А данные отправляете в другом формате - multipart/form-data
И как по-вашему PHP должен обрабатывать пользовательский ввод, в котором содержимое не соответствует заявленному в заголовке типу?