¿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 httprequesto 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 httprequesto 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
XMLHttpRequestobjeto de la siguiente manera:Ese código se publicaría
someStuffenurl. Solo asegúrese de que cuando cree suXMLHttpRequestobjeto, sea compatible con todos los navegadores. Hay infinitos ejemplos de cómo hacer eso.fuente
someStuff?someStuffpuede 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-urlencodedtipo MIME no tiene uncharsetpará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 elFormDataobjeto 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
FormDatacreará una solicitud de formulario de varias partes en lugar de unaapplication/x-www-form-urlencodedsolicitudnavigator.sendBeacon ()
Si simplemente necesita
POSTdatos y no requiere una respuesta del servidor, la solución más corta sería utilizarnavigator.sendBeacon():fuente
navigator.sendBeaconno 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