¿Hay alguna manera de enviar datos usando el método POST sin un formulario y sin actualizar la página usando solo JavaScript puro (no jQuery $.post()
)? ¿Tal vez httprequest
o algo más (simplemente no puedo encontrarlo ahora)?
140
¿Hay alguna manera de enviar datos usando el método POST sin un formulario y sin actualizar la página usando solo JavaScript puro (no jQuery $.post()
)? ¿Tal vez httprequest
o algo más (simplemente no puedo encontrarlo ahora)?
Respuestas:
Puede enviarlo e insertar los datos en el cuerpo:
Por cierto, para obtener la solicitud:
fuente
El [nuevo-ish en el momento de escribir en 2017] Fetch API está destinado a facilitar las solicitudes GET, pero también es POST.
Si eres tan flojo como yo (o simplemente prefieres un atajo / ayuda):
fuente
Puede usar el
XMLHttpRequest
objeto de la siguiente manera:Ese código se publicaría
someStuff
enurl
. Solo asegúrese de que cuando cree suXMLHttpRequest
objeto, sea compatible con todos los navegadores. Hay infinitos ejemplos de cómo hacer eso.fuente
someStuff
?someStuff
puede ser cualquier cosa que desee, incluso una cadena simple. puede verificar la solicitud utilizando servicios en línea como mi favorito personal: ( requestb.in )application/x-www-form-urlencoded
tipo MIME no tiene uncharset
parámetro: iana.org/assignments/media-types/application/…Además, REST permite obtener datos de atrás de un POSTAL petición.
JS (poner en static / hello.html para servir a través de Python):
Servidor Python (para pruebas):
Registro de consola (cromo):
Registro de consola (firefox):
Registro de consola (Edge):
Registro de Python:
fuente
Hay un método fácil para envolver sus datos y enviarlos al servidor como si estuviera enviando un formulario HTML utilizando
POST
. Puedes hacerlo usando elFormData
objeto de la siguiente manera:ahora puede manejar los datos en el lado del servidor tal como lo hace con formularios HTML reugulares.
Información adicional
Se recomienda no configurar el encabezado Content-Type al enviar FormData ya que el navegador se encargará de eso.
fuente
FormData
creará una solicitud de formulario de varias partes en lugar de unaapplication/x-www-form-urlencoded
solicitudnavigator.sendBeacon ()
Si simplemente necesita
POST
datos y no requiere una respuesta del servidor, la solución más corta sería utilizarnavigator.sendBeacon()
:fuente
navigator.sendBeacon
no está destinado a ser utilizado para este propósito en mi opinión.Puede usar XMLHttpRequest, buscar API, ...
Si desea usar XMLHttpRequest puede hacer lo siguiente
O si quieres usar la API de recuperación
fuente
¿Sabía que JavaScript tiene sus métodos y bibliotecas incorporados para crear formularios y enviarlos?
Aquí veo muchas respuestas pidiendo usar una biblioteca de terceros, lo cual creo que es una exageración.
Haría lo siguiente en Javascript puro:
De esta manera (A) no necesita depender de terceros para hacer el trabajo. (B) Todo está integrado en todos los navegadores, (C) más rápido, (D) funciona, no dude en probarlo.
Espero que esto ayude. H
fuente