jquery.post 和 jquery.get 的区别是什么?

9

这两个AJAX调用有什么区别,使用ASP.NET MVC框架时我为什么要选择其中之一?


区别就像 ASP.NET 中 POST 和 GET 方法的区别一样。你在问题中包含了 asp.net-mvc 标签,所以我假设你对它有一些经验。 - Richard Knop
6个回答

11

一个使用POST,另一个使用GET。

就它们的用途而言——唯一的实际技术区别(如果我错了,请纠正这篇文章)在于GET对查询字符串有更短的限制。在实践中,GET用于从服务器获取某些内容。GET调用不应该在服务器上产生副作用。POST是当您想要发送某些内容到服务器并让其执行某些操作时使用的。

编辑:我想要描述GET的词是幂等的。您应该能够无限次地进行完全相同的GET调用,并且每次都能够得到相同的结果,而不会对服务器产生任何影响(当然,前提是没有其他人更改了服务器的状态)。但请记住,没有技术障碍阻止您滥用GET或POST。


1
一个Get请求可能会引起副作用,它应该是幂等的。请参阅http://en.wikipedia.org/wiki/Idempotent#In_computing。(不引起副作用是实现幂等性的一种方式,但不是唯一的方式)。 - Kyle Butt
1
谢谢!“幂等”正是我在写那个时候想要的词,只是我记不起来了。 - Tesserex

4

$.post$.get只是使用相应的type参数值包装$.ajax的方法。(在源代码中的第4888和4913行。)

在MVC中,您可以指定控制器操作仅接受使用特定HTTP请求类型进行的请求(使用AcceptVerbs控制器/操作属性)。

如果您要向这样的操作提交请求,则需要指定请求类型,在这种情况下,您可能会发现$.post$.get$.ajax的便捷快捷方式。


3

我遇到的一个问题是,IE会缓存$.get调用,这对于使用Ajax刷新数据的情况来说是一个问题。如果你想使用GET但不想被缓存,你需要使用$.ajax并在设置中传递cache: false。


1
**GET** - Requests data from a specified resource
**POST** - Submits data to be processed to a specified resource

GET 基本上是用于从服务器获取(检索)一些数据。注意:GET 方法可能返回缓存的数据。

POST 也可以用于从服务器获取一些数据。然而,POST 方法永远不会缓存数据,并且通常用于将数据与请求一起发送。


1

get 是一个 HTTP GET 调用,而 post 是一个 HTTP POST。

请参阅维基百科以获取 更多解释

如果您要包含数据(例如通过表单提交),请使用 post;否则,如果您只是加载页面或者想要传递 查询字符串参数,请使用 get。(您传递给 get 的任何数据都将作为查询字符串传递)

编辑:

它们被分开是因为底层的 XMLHttpRequest 对象(浏览器中基本的 AJAX 对象)需要 指定方法。事实上,甚至比这更低,当您请求网页时,您必须使用 HTTP/1.0 GET 或 HTTP/1.0 POST(或其他请求方法)。如果您从设计角度来看,作为将字符串传递到某种“加载”方法的替代方案,我无法说出 jQuery 软件架构师的想法。

编辑2:

实际上,如果您查看最新的jQuery文档,getpost被列为“简写方法”,并提供了等效的方法。因此,它们只是用于缩短您的代码,并且与ajax方法是同义词。


我知道普通的是如何工作的,但就jQuery而言,我不明白为什么它们是分开的。 - Shawn Mclean

0

在推送更改集时,您应始终使用POST - 这涉及到安全问题,我将把所有的细节留给您去研究。


1
Hory,一个新词,也许是从hoary和gory衍生出来的混成词。 - MrBoJangles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接