Ответ 1
вы не указали достаточно информации о том, как вы используете функцию отправки, но я предполагаю, что вы не задаете тип mime для указания, что вы отправляете данные формы
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
отправленные данные в этом случае кодируются при кодировании строки запроса
xhr.send("name=foo&value=bar");
иначе он не будет интерпретироваться как данные формы с помощью инструментов разработчика.
jquery делает большую часть работы для вас в этом отношении.
Обновление: Чтобы ответить явно, в чем разница...
-
если запрос (обычно POST) имеет заголовок
Content-type
, установленный наapplication/x-www-form-urlencoded
, ожидается, что тело будет иметь форму стандартной последовательности с ключевыми парами=
с ключом, соединенными с помощью&
. Строка данных, а затем показывает параметры значения ключа (при просмотре синтаксического анализа). Этот путь был гораздо более распространенным в прошлом, поскольку он является стандартным для HTML-форм. -
другие случаи показаны в разделе Запросить полезную нагрузку (и в настоящее время анализируются для чтения также для обычных форматов, таких как JSON).