В чем разница между данными формы и полезной нагрузкой запроса?

Когда я отправляю запрос AJAX Post и отправляю параметры в queryString в методе send(),

Инструмент захвата Chrome Developer Tool XHR отображает параметры под нагрузкой запроса. и когда я использую функцию jquery post, Инструмент отображает параметры в разделе "Данные формы".

В чем разница?

Ответ 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).