既然大多数现代浏览器都支持AJAX和客户端请求而不执行POST,那么POST(表单帖子)的作用是什么?
当POST始终优先于XmlHttpRequest时,是否存在情况或一般规则?
POST所做的就是在服务器头部放置变量键值对.POST我可以想到的优点是大量的数据和移动浏览器.我还有很多其他人吗?
NB我知道你可以用AJAX调用执行POST,我主要是用标签来讨论
这个问题有点棘手,因为它混淆了两个概念.第一个是POSTing,第二个是Ajax.与GETting相比,POST是一种具有不同实现和语义的不同HTTP方法.Ajax或XmlHttpRequest在正常请求/导航中具有对应性.您可以对XmlHttpRequest和普通导航和表单提交使用POST或GET(好吧,POST始终是"表单提交").XmlHttpRequest和普通请求之间的区别在于普通请求用新页面替换页面.
您可以只使用Ajax编写任何网站来获取数据并更改DOM; 这主要是Gmail的工作原理.传统意义上没有"表格提交".但仍有GET和POST,因为服务器和浏览器对结果的解释不同.GET应该是幂等的; POST适用于更改服务器状态的操作.例如,ecom事务应该是POST.使用Ajax时这不会改变,因为您希望代理服务器也了解这是一个POST,并且他们不应该尝试缓存响应.
使用GET和POST也有优点和缺点.您无法为POST结果添加书签,因为隐藏了参数.你不能用无限长度的参数值获取东西,因为IE只支持大约2000个字符.
使用Ajax和正常提交也有缺点; 你不能将结果页面加入书签(因为页面没有改变); 后退按钮将无法按预期工作.但是使用Ajax,您可以最大限度地减少传输的数据,并为页面提供方便的更新(例如监视长进程的状态),而不会产生烦人的闪烁或刷新.
总之,Ajax和传统表单提交这两种请求类型都可以与GET和POST一起使用,每种请求类型都有利弊.这两种类型都不能完成另一种类型的所有操作,因此您可以预期在可预见的未来会看到混合物.
由于安全限制,某些操作无法使用AJAX请求执行.例如,使用AJAX无法上传文件.