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