【发布时间】:2010-03-03 21:26:19
【问题描述】:
这两个 AJAX 调用有什么区别,为什么在使用 asp.net mvc 框架时我会选择使用其中一个?
【问题讨论】:
-
区别与ASP.NET中POST和GET方法的区别相同。您在问题中包含了 asp.net-mvc 标记,所以我假设您对此有一些经验。
标签: jquery
这两个 AJAX 调用有什么区别,为什么在使用 asp.net mvc 框架时我会选择使用其中一个?
【问题讨论】:
标签: jquery
一个使用 POST,一个使用 GET。
就它们的含义而言——唯一真正的技术差异(如果我错了,请更正这篇文章)是 GET 对查询字符串的限制要短得多。在实践中,GET 用于从服务器获取内容时。 GET 调用不应对服务器造成副作用。 POST 是当你打算在服务器上发送一些东西并让它做一些事情的时候。
编辑:我正在寻找的用于描述 GET 的词是幂等的。您应该能够无限次地进行完全相同的 GET 调用,并且每次都获得相同的结果,而不会对服务器造成任何影响(当然前提是没有其他人更改了服务器的状态。)但请记住,那里没有技术障碍阻止您滥用 GET 或 POST。
【讨论】:
$.post 和 $.get 只是 $.ajax 的包装器,具有 type 参数的各自值。 (source 中的第 4888 和 4913 行。)
在 MVC 中,您可以指定控制器操作仅接受使用特定 HTTP 请求类型发出的请求(使用 AcceptVerbs 控制器/操作属性)。
如果您要向此类操作提交请求,则需要指定请求类型,在这种情况下,您可能会发现$.post 或$.get 是$.ajax 的便捷快捷方式。
【讨论】:
我遇到的一个问题是 $.get 调用被 IE 缓存,这是一个问题,因为您通常使用 Ajax 来刷新数据。如果你想使用 GET 但不想被缓存,你必须下拉到 $.ajax 并在设置中传递 cache: false 。
【讨论】:
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 背后的软件架构师的想法。
编辑2:
实际上,如果您查看最新的 jQuery 文档,get 和 post 列在“速记方法”下,并给出了等效方法。因此,它们只是为了缩短您的代码,是 ajax 方法的同义词。
【讨论】:
在推送更改集时,您应该始终使用 POST - 存在安全隐患,我将把所有可怕的细节留给研究。
【讨论】:
**GET** - Requests data from a specified resource
**POST** - Submits data to be processed to a specified resource
GET 主要用于从服务器获取(检索)一些数据。注意:GET 方法可能会返回缓存数据。
POST 也可用于从服务器获取一些数据。但是,POST 方法从不缓存数据,通常用于随请求一起发送数据。
【讨论】: