Есть ли способ отправить данные с помощью метода POST без формы и без обновления страницы, используя только чистый JavaScript (не jQuery $.post()
)? Может быть httprequest
или что-то еще (просто не могу найти сейчас)?
141
Есть ли способ отправить данные с помощью метода POST без формы и без обновления страницы, используя только чистый JavaScript (не jQuery $.post()
)? Может быть httprequest
или что-то еще (просто не могу найти сейчас)?
Ответы:
Вы можете отправить его и вставить данные в тело:
Кстати, для запроса на получение:
источник
[Новый на момент написания в 2017 году] Fetch API предназначен для упрощения запросов GET, но он также может выполнять POST.
Если вы такой же ленивый, как я (или просто предпочитаете ярлык / помощник):
источник
Вы можете использовать
XMLHttpRequest
объект следующим образом:Этот код будет отправлен
someStuff
вurl
. Просто убедитесь, что когда вы создаете свойXMLHttpRequest
объект, он будет кроссбраузерным. Есть бесконечное количество примеров того, как это сделать.источник
someStuff
?someStuff
может быть что угодно, даже простая строка. вы можете проверить запрос с помощью онлайн-сервисов, таких как мой личный фаворит: ( requestb.in )application/x-www-form-urlencoded
тип MIME не имеетcharset
параметр: iana.org/assignments/media-types/application/...Кроме того , RESTful позволяет получить данные обратно из POST запроса.
JS (поместите в static / hello.html для обслуживания через Python):
Сервер Python (для тестирования):
Журнал консоли (хром):
Журнал консоли (firefox):
Журнал консоли (Edge):
Журнал Python:
источник
Существует простой способ обернуть ваши данные и отправить их на сервер, как если бы вы отправляли HTML-форму, используя
POST
. вы можете сделать это с помощьюFormData
объекта следующим образом:теперь вы можете обрабатывать данные на стороне сервера точно так же, как вы работаете с регулярными HTML-формами.
Дополнительная информация
Рекомендуется не устанавливать заголовок Content-Type при отправке FormData, так как браузер позаботится об этом.
источник
FormData
создаст многостраничный запрос формы, а неapplication/x-www-form-urlencoded
запросnavigator.sendBeacon ()
Если вам просто нужны
POST
данные и не требуется ответа от сервера, самым коротким решением будет использованиеnavigator.sendBeacon()
:источник
navigator.sendBeacon
на мой взгляд, не предназначен для использования с этой целью.Вы можете использовать XMLHttpRequest, fetch API, ...
Если вы хотите использовать XMLHttpRequest, вы можете сделать следующее
Или, если вы хотите использовать fetch API
источник
Знаете ли вы, что в JavaScript есть встроенные методы и библиотеки для создания форм и их отправки?
Я вижу здесь много ответов, в которых все просят использовать стороннюю библиотеку, что, на мой взгляд, является излишним.
Я бы сделал на чистом Javascript следующее:
Таким образом (A) вам не нужно полагаться на третьи стороны для выполнения работы. (B) Все это встроено во все браузеры, (C) быстрее, (D) работает, попробуйте.
Надеюсь, это поможет. ЧАС
источник