J'ai besoin d'envoyer un JSON (que je peux stringify) au serveur et de récupérer le JSON résultant côté utilisateur, sans utiliser JQuery.
Si je dois utiliser un GET, comment puis-je transmettre le JSON en tant que paramètre? Y a-t-il un risque que ce soit trop long?
Si je dois utiliser un POST, comment définir l'équivalent d'une onload
fonction dans GET?
Ou devrais-je utiliser une méthode différente?
REMARQUE
Cette question ne concerne pas l'envoi d'un simple AJAX. Il ne doit pas être fermé comme duplicata.
javascript
json
post
get
xmlhttprequest
Jérôme Verstrynge
la source
la source
XMLHttpRequest
. Nonobstant le nom, vous pouvez l'utiliser pour les données JSON (et c'est en fait ainsi que jQuery le fait en arrière-plan).sending
une requête ajax, ce qui est assez général. Celui-ci demandesending
mais etreceiving JSON
en pur JavaScript. De plus, pour renvoyer ce JSON, vous devez savoir comment résoudre cette partie du problème sur leserver-side
qui est une autre chose non mentionnée sur la question référencée.onreadystatechange
est ce que vous utilisez pour émuleronload
, comme le montre la réponse acceptée ci-dessous. Pour l'analyse, vous utilisez simplementJSON.parse()
(encore une fois, comme indiqué dans la réponse), mais je supposais que vous le saviez déjà puisque vous avez mentionné la stringification dans la question. J'ai essayé de vous aider en vous indiquant non pas 1 mais 2 questions couvrant ces points. Il y a évidemment une différence - sont rarement 2 questions exactement identiques - mais il est trivial si vous savez déjà comment stringify et parser JSON. Cela dit, puisque vous et @ hex494D49 n'êtes pas d'accord, je propose cette proposition pour la réouverture.Réponses:
Envoi et réception de données au format JSON à l'aide de la méthode POST
Envoi et réception de données au format JSON à l'aide de la méthode GET
Gestion des données au format JSON côté serveur avec PHP
La limite de longueur d'une requête HTTP Get dépend à la fois du serveur et du client (navigateur) utilisés, de 2 Ko à 8 Ko. Le serveur doit renvoyer l'état 414 (Request-URI Too Long) si un URI est plus long que ce que le serveur peut gérer.
Remarque Quelqu'un a dit que je pourrais utiliser des noms d'état au lieu de valeurs d'état; en d'autres termes, je pourrais utiliser
xhr.readyState === xhr.DONE
au lieu dexhr.readyState === 4
Le problème est qu'Internet Explorer utilise des noms d'état différents, il est donc préférable d'utiliser des valeurs d'état.la source
xhr.status === 200
.XHR failed loading: POST
Utilisation de la nouvelle récupération d' API :
la source
JSON.stringify
deux fois.