Necesito enviar un JSON (que puedo secuenciar) al servidor y recuperar el JSON resultante en el lado del usuario, sin usar JQuery.
Si debo usar un GET, ¿cómo paso el JSON como parámetro? ¿Existe el riesgo de que sea demasiado largo?
Si debo usar un POST, ¿cómo configuro el equivalente de una onload
función en GET?
¿O debería usar un método diferente?
OBSERVACIÓN
Esta pregunta no se trata de enviar un AJAX simple. No debe cerrarse como duplicado.
javascript
json
post
get
xmlhttprequest
Jérôme Verstrynge
fuente
fuente
XMLHttpRequest
. Independientemente del nombre, puede usarlo para datos JSON (y así es como jQuery lo hace en segundo plano).sending
una solicitud ajax, que es algo bastante general. Este está pidiendosending
pero yreceiving JSON
en JavaScript puro. Además, para devolver este JSON, debe saber cómo resolver esta parte del problema,server-side
que es otra cosa que no se menciona en la pregunta de referencia.onreadystatechange
es lo que usa para emularonload
, como se muestra en la respuesta aceptada a continuación. Para analizar, solo usaJSON.parse()
(nuevamente, como se muestra en la respuesta), pero suponía que ya lo sabía desde que mencionó la cadena en la pregunta. He tratado de ayudarlo al señalarle no 1 sino 2 preguntas que cubren estos puntos. Obviamente, hay alguna diferencia, rara vez hay 2 preguntas exactamente idénticas, pero es trivial si ya sabe cómo secuenciar y analizar JSON. Dicho esto, dado que usted y @ hex494D49 no están de acuerdo, estoy nominando esto para reabrir.Respuestas:
Enviar y recibir datos en formato JSON mediante el método POST
Enviar y recibir datos en formato JSON usando el método GET
Manejo de datos en formato JSON en el lado del servidor usando PHP
El límite de la longitud de una solicitud HTTP Get depende tanto del servidor como del cliente (navegador) utilizado, de 2kB a 8kB. El servidor debe devolver el estado 414 (Request-URI Too Long) si un URI es más largo de lo que el servidor puede manejar.
Nota Alguien dijo que podía usar nombres de estado en lugar de valores de estado; en otras palabras, podría usar en
xhr.readyState === xhr.DONE
lugar dexhr.readyState === 4
El problema es que Internet Explorer usa diferentes nombres de estado, por lo que es mejor usar valores de estado.fuente
xhr.status === 200
.XHR failed loading: POST
Usando nueva api fetch :
fuente
JSON.stringify
dos veces.