是否所有数据都应通过HTTP-POST发送?

时间:2011-07-18 08:11:10

标签: php http-post

我有一些jQuery将数据发送到AddComment.php页面。数据是用户ID(可以通过会话获得),项目ID和文本形式下的注释。

在这种情况下,是否应通过POST发送所有数据?是否有人可能会发现GET和POST混合?

3 个答案:

答案 0 :(得分:4)

阅读RFC 2616。

与GET和POST相关的非常具体的语义对缓存和日志记录有很大的影响。

对于您的示例,要添加的数据应在POST中发送。是否应通过POST或GET变量发送对被评论项目的引用是有争议的。 (您可以使用查询字符串POST到URL,任何有能力的Web语言都应该能够区分通过这两种方法发送的相同变量名称)

当GET和POST应该混合时,一个更透明的例子是POST到前端控制器 - 这里相同的路径被各种不同的功能使用(如果你愿意,可以使用网页)。调用的特定功能位由GET操作中的查询指示。如果将选择条件移入POST,则必须满足前端控制器中的两种方案,并且会丢失日志文件中的功能。

答案 1 :(得分:2)

它应该通过POST发送,主要是因为评论可能超过Web浏览器将访问的URL的长度。它也应该通过POST发送,因为这个表单创建或修改数据,这就是惯例。例如,搜索蜘蛛不会发出POST请求,以避免这样做。

你不能混合使用GET和POST。 HTTP请求只有一种方法。

答案 2 :(得分:1)

实际上我认为如果你这样做:

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);

你的itemId将通过POST发送,ID通过GET和php识别它(我有时使用表单的动作而不是通过ajax)。

BTW - 为什么你需要这个?为什么不通过POST发送所有内容?