2011-07-18 5 views
3

J'ai une certaine jQuery qui envoie des données à une page AddComment.php. Les données sont un identifiant d'utilisateur (pouvant être obtenu au cours d'une session), un identifiant d'article et un commentaire sous forme de texte.Toutes les données doivent-elles être envoyées par HTTP-POST?

Dans ce cas, toutes les données doivent-elles être envoyées via un POST? Y a-t-il des cas où l'on pourrait trouver un mélange de GET et de POST?

+2

Vous pourriez tout aussi bien envoyer un "POST". Ma seule suggestion, si vous pouvez obtenir l'ID utilisateur de la session, faites-le car c'est plus sûr que de compter sur l'entrée de l'utilisateur (qui pourrait être changé par l'utilisateur). –

Répondre

4

Allez lire la RFC 2616.

Il y a une sémantique très spécifiques associés à GET et POST qui ont un impact important sur la mise en cache et sur l'exploitation forestière.

Dans le cas de votre exemple, les données à ajouter doivent être envoyées dans un POST. La question de savoir si une référence à l'élément commenté doit être envoyée via une variable POST ou GET est discutable. (Vous pouvez POST à ​​une URL avec une chaîne de requête et n'importe quel langage web compétent devrait pouvoir discriminer le même nom de variable envoyé par les deux méthodes)

Un exemple plus transparent de quand GET et POST doivent être mélangés est quand POSTing à un contrôleur frontal - ici le même chemin est utilisé par divers différents éléments de fonctionnalité (pages Web si vous le souhaitez). Le bit de fonctionnalité spécifique appelé est indiqué par la requête dans une opération GET. Si les critères de sélection sont déplacés dans le POST, vous devez prendre en compte les deux scénarios dans le contrôleur frontal et vous perdez la résolution de la fonctionnalité dans les fichiers journaux.

2

Il doit être envoyé par POST principalement parce qu'un commentaire peut dépasser la longueur d'une URL à laquelle un navigateur Web aura accès. Il devrait également être envoyé par POST parce que ce formulaire crée ou modifie des données, et c'est la convention. Les robots de recherche ne feront pas de requêtes POST, par exemple, pour éviter cela.

Vous ne pouvez pas mélanger GET et POST. Une requête HTTP est d'une seule méthode.

+3

Vous pouvez ** mélanger ** GET et POST. –

+0

Je ne suis pas d'accord: vous pouvez mélanger POST et GET –

+0

Dépend de ce que vous voulez dire. En PHP, les Querystrings sont passées au tableau $ _GET. Il n'y a aucun problème à utiliser des chaînes de requête dans une post-requête. Les $ _GET et $ _POST auront un contenu. –

1

En fait, je pense que si vous faites:

var id= $('#id').val(); 
var itemid= $('#itemid').val(); 
var comment= $('#comment').val(); 
var url = 'AddComment.php?id='+id; 
var data = { itemid: itemid, comment: comment } 
$.post(url, data, successFunction); 

votre itemId sera envoyé THROU POST et l'ID par GET et php reconnaîtra (je le fais parfois que l'utilisation de l'action de la forme, mais pas par ajax).

BTW - Pourquoi avez-vous besoin de cela? Pourquoi ne pas tout envoyer via POST?

+0

"BTW - Pourquoi avez-vous besoin de cela? Pourquoi ne pas tout envoyer via POST?" Ma règle de base consiste à utiliser POST lorsqu'une requête implique l'écriture de quelque chose dans la base de données. Cependant, je me demandais si quelque chose justifierait l'hybridation GET/POST. Donc, je serais intéressé d'entendre comment/pourquoi vous envoyez un ID via GET :) –

+0

Eh bien, en fait je le fais (mélange POST/GET) assez souvent, merci à symcbean j'ai aussi quelques informations sur le sujet! :) –

Questions connexes