Appel POST par rapport à Ajax
Maintenant que la plupart des navigateurs modernes support AJAX côté client et les demandes sans procéder à un POSTE, quel est le rôle de la POSTE (post de formulaire)?
Sont t-il des situations ou des règles générales lorsqu'un POSTE sera toujours préférable à un XmlHttpRequest?
Tous que le POST est en train de faire est de placer la variable de paires clé-valeur à l'intérieur du serveur de la tête. Les avantages de POST, je ne pense que de grandes quantités de données et les navigateurs mobiles. Il existe de nombreuses autres que je suis absent?
N. B. je sais que vous pouvez effectuer des POSTs avec des appels AJAX, je parle principalement sur <form>
tag
source d'informationauteur |
Vous devez vous connecter pour publier un commentaire.
Cette question est un peu délicate car il regroupe deux concepts. La première est l'Affichage et le second Ajax. L'affichage, par rapport à l'Obtention, c'est une autre méthode HTTP avec des différents la mise en œuvre et de la sémantique. Ajax, XmlHttpRequest ou, a son équivalent dans la normale requérant/de la navigation. Vous pouvez utiliser des POST ou GET pour les deux XmlHttpRequest et normale de la navigation et de la soumission du formulaire (ainsi, la POSTE est toujours un "formulaire de soumission"). La différence entre XmlHttpRequest et demandes normales est qu'une requête normale remplace la page avec une nouvelle page.
Vous pourriez écrire n'importe quel site web en utilisant uniquement Ajax pour obtenir des données et de modifier le DOM, c'est surtout comment Gmail fonctionne. Il n'existe pas de "formulaires" dans le sens traditionnel du terme. Mais il y a encore des GETs et des Postes, car le serveur et les navigateurs n'interprètent différemment les résultats. OBTENIR est censé être idempotent; POST est destiné à des opérations qui modifient l'état sur le serveur. Par exemple, un ecom transaction devrait être un POST. Cela ne change pas lors de l'utilisation de l'Ajax parce que vous voulez que les serveurs proxy pour aussi comprendre que c'est un POST et qu'ils ne devraient pas essayer de mettre en cache la réponse.
Il y a aussi des avantages et des inconvénients à l'utilisation de GET vs POST. Vous ne pouvez pas signet les résultats d'un POST, parce que les paramètres sont cachés. Vous ne pouvez pas OBTENIR quelque chose avec les valeurs de paramètre de longueur illimitée, parce que IE ne supporte environ 2000 caractères.
Il ya aussi des inconvénients à l'utilisation de l'Ajax vs normale soumissions; vous ne pouvez pas placer un signet sur la page de résultat (parce que la page n'a pas changé); le bouton retour ne fonctionnera pas comme prévu. Mais avec l'Ajax vous pourriez réduire la quantité de données transférées et aussi très pratique à des mises à jour d'une page (comme le suivi de l'état d'un long processus) sans scintillement gênant ou rafraîchissant.
En résumé, les deux types de demande, d'Ajax et de la forme traditionnelle de la soumission, peut à la fois être utilisé avec des GETs et de Messages, et il y a des avantages et des inconvénients de chaque. Ni le type peut faire tout ce que les autres peuvent et vous pouvez donc vous attendre à voir un mélange pour l'avenir prévisible.
Certaines actions ne peuvent pas être effectuées à l'aide de requêtes AJAX en raison de restrictions de sécurité. Par exemple, le téléchargement de fichiers ne peut pas être fait avec l'AJAX.
Si vous avez besoin de rafraîchir la page entière, un post sera probablement plus facile.
Le facteur clé de différenciation, c'est que le POST d'un formulaire envoie les données et naviguer vers une nouvelle URL en un seul voyage aller-retour vers le serveur. Ajax peut envoyer des données, mais ne peut pas naviguer vers une nouvelle page.
Er .. l'affichage des formulaires?
Post est vraiment bon pour les grandes formes que les valeurs sont cachés dans les en-têtes html et pas cloué sur la chaîne d'url?
Si la théorie, un HTTP GET devrait être un idempotent demande de renseignements: Deux identiques Obtient doit renvoyer exactement les mêmes informations.
HTTP Postes, d'autre part, sont destinés à contenir de l'état et effectuer des actions: Deux Postes identiques peut-être effectuer différentes actions en fonction de qui le faire, ce qui a été fait avant, et quand c'est fait.
Je vais répondre à ma propre question avec cette vidéo j'ai récemment découvert par Doug Crockford. Il décrit la bascule entre tous ajax et la totalité de la page est rafraîchie.