这两个AJAX调用之间有什么区别?为什么我在使用asp.net mvc框架时会选择使用?
答案 0 :(得分:11)
一个使用POST,一个使用GET。
就他们的意图而言 - 唯一真正的技术差异(如果我错了请更正这篇文章)是GET对查询字符串的限制要短得多。实际上,GET用于从服务器获取内容时。 GET调用不应该对服务器造成副作用。 POST是指您打算在服务器上发送内容并让它对其执行某些操作。
编辑:我正在寻找的用于描述GET的词是幂等的。您应该能够无限次地进行完全相同的GET调用,并且每次都获得相同的结果,而不会对服务器产生任何影响(当然,前提是没有其他人改变服务器的状态。)但是请记住那里没有技术障碍阻止您滥用GET或POST。
答案 1 :(得分:4)
$.post
和$.get
只是$.ajax
的包装器,具有type
参数的相应值。 (source中的第4888和4913行。)
在MVC中,您可以指定控制器操作仅接受使用特定HTTP请求类型发出的请求(使用AcceptVerbs控制器/操作属性)。
如果您要提交此类操作的请求,则需要指定请求类型,在这种情况下,您可能会找到$.post
或$.get
$.ajax
的便捷快捷方式。
答案 2 :(得分:3)
我遇到的问题是IE会缓存$ .get调用,这是一个问题,因为你通常使用Ajax来刷新数据。如果你想使用GET但不想被缓存,你必须下拉到$.ajax并在设置中传递cache:false。
答案 3 :(得分:1)
get
是HTTP GET调用,post
是HTTP POST。
请参阅维基百科more explanation。
基本上,如果您要包含数据(例如表单提交),请使用post
;否则,如果您只是加载页面,或者想要传递query string parameters,请使用get
。 (您传递给get
的任何数据都将作为查询字符串传递)
编辑:
它们是分开的,因为底层的XMLHttpRequest对象(浏览器中的基本AJAX对象)需要specifying a method。实际上,甚至低于此,当您请求网页时,您必须使用HTTP / 1.0 GET或HTTP / 1.0 POST(或其他请求方法)。如果从设计的角度来看,作为将字符串传递给某种“加载”方法的替代方法,我不能说jQuery背后的软件架构师在想什么。
EDIT2:
实际上,如果你查看最新的jQuery文档,get和post列在“简写方法”下,并给出了等效的方法。因此,它们只是用于缩短代码并且与ajax方法同义。
答案 4 :(得分:0)
推送更改集时应始终使用POST - 有安全隐患,我会将其中的所有详细信息留给研究。
答案 5 :(得分:0)
**GET** - Requests data from a specified resource
**POST** - Submits data to be processed to a specified resource
GET主要用于从服务器获取(检索)某些数据。注意:GET方法可能会返回缓存数据。
POST也可用于从服务器获取一些数据。但是,POST方法永远不会缓存数据,并且通常用于与请求一起发送数据。