Отправка HTML-формы создает HTTP-запрос, отформатированный в соответствии с правилами, определенными для HTML-форм, и заставляет браузер перейти к полученному ответу.
Выполнение запроса с помощью JavaScript позволяет программированию создавать гораздо более широкий спектр запросов - включая добавление пользовательских заголовков, форматирование данных различными способами (например, JSON) и идентично тому, как форма HTML будет создавать запрос - и вызывает ответ должен быть обработан с помощью JavaScript.
Как правило, при написании кода на стороне сервера вам не нужно заботиться о том, пришел ли запрос из JavaScript или из HTML-формы. Есть ситуации, когда вы делаете это, но только как XY Проблема .
Например, вы можете захотеть ответить на регулярную отправку формы с помощью HTML-документа (потому что браузер переходит на него), но на Ajax-запрос с JSON (потому что вы хотите легко его обработать). В этом случае JavaScript должен установить Accept
заголовок запроса , чтобы сообщить серверу, что он предпочел бы ответ JSON. Затем код на стороне сервера, который вы пишете, должен посмотреть на это, чтобы определить, является ли предпочтительным HTML или JSON (и не беспокоиться, почему HTML или JSON предпочтительнее).