在Ajax中GET和POST

GETPOSTAjax请求有什么区别?

我没有看到这两者之间的任何区别,除了当我使用GET ,参数发送的URL,这对我来说没有什么区别,因为所有的请求都是在后台进行的,用户没有find任何区别。

编辑:什么是用于PUTDELETE方法?

GET旨在从服务器获取数据。 POST(和不太知名的朋友PUT和DELETE)被devise用于修改服务器上的数据。

GET请求不应该导致从应用程序中删除数据。 如果你有一个链接,你可以点击一个GET来删除数据,然后Google spidering你的网站可以点击你所有的“删除”链接。

规范的答案可以在这里find,它引用了HTML 2.0规范:

如果一个表单的处理是幂等的(即它对世界状态没有持久的可观察的影响),那么表单方法应该是GET。 许多数据库search没有明显的副作用,并且使查询表单理想的应用程序。

如果与表单处理相关的服务具有副作用(例如,修改数据库或订阅服务),则该方法应为POST。

在您的AJAX调用中,您需要使用您的服务器支持的任何方法。 您应该始终devise您的服务器,以便通过POST / PUT / DELETE调用修改数据的操作。 其他注释有链接到REST,通常将C / R / U / D映射到“POST或PUT”(Create)/ GET(Read)/ PUT(Update)/ DELETE(Delete)。

如果您通过HTTPS发送大量数据或敏感数据,则需要使用POST。 如果它只是一个简单的参数,我会使用GET。

GET请求对可发送的数据量有限制。 我忘记了确切的数字,但如果您发送任何实质性内容,这可能会导致问题。

基本上,GET和POST之间的区别在于,在GET请求中,参数在URL中传递,在POST中,参数包含在消息正文中。

无论其AJAX与否都无关紧要。 它关于你正在采取的行动。 我build议遵循REST的原则。 哪些进一步规定更新,删除等…

GET请求在CSRF(跨站点请求伪造)攻击中更容易被利用。 即假的POST请求需要在用户端启用Javascript,而假的GET请求仍然可能只是与img,脚本标签。

许多Web服务器限制了可以作为URL一部分传递的数据的长度,所以GET请求可能会以奇怪的方式打破,难以debugging。

另外,大多数服务器软件都会在访问日志中loggingURL,所以如果您在GET请求中传递敏感信息(例如密码),则很可能会以明文forms写入磁盘。

从REST的angular度来看,GET请求应该没有副作用 – 他们不应该修改数据。 所以,如果你只是通过ID获得资源,这是有道理的,但是如果你正在提交一个资源的变化,你应该使用PUT,POST或UPDATE作为http动词。

两者都用于发送一些数据并使用该数据接收一些响应。

GET:获取信息存储在服务器中。 IE浏览器。 search,推特,个人信息。 如果你想发送信息,然后使用process.php?name = subroto获取请求发送请求,所以它基本上通过url发送信息。 url无法处理超过2083个字符。 所以对于博客文章,你可以记得这是不可能的?

POST:发布与get相同的东西。 用户注册,用户login,大数据发送,博客文章。 如果你需要发送安全的信息,然后使用后或大数据,因为它不通过url。

AJAX:$ .get()和$ .post()包含$ .ajax()子集的特性。 它有很多configuration。

$ .get()方法,这是$ .Ajax()的简写。 当使用$ .get(),而不是传入一个对象时,传入参数。 至less需要前两个参数,它们是要检索的文件的URL(即'test.txt')和成功的callback。

概要:

$.get( url [, data ] [, success ] [, dataType ] ) $.post( url [, data ] [, success ] [, dataType ] ) // for sending secure or Large information $.ajax( url [, settings ] ) // More Configaration 

关于我,我更喜欢POST。 我保留得到的事件,我知道发送的价值是有限的数据,我有“控制”,例如,检索具有ID的项目。 例如,“getitem?id = 123”,“deleteImtem?id = 123”,…对于其他情况,当我有一个用户可填写的表单时,我更喜欢POST。

就像Ryan Smith所说的那样,最好使用POST来发送大量的数据,而在其他语言/特殊字符的情况下使用POST更less(一般来说,所有专业的javascript框架都不应该有任何问题来处理,但是我觉得不太适合使用POST)。

对于REST的观点,在我看来,你可以把它用于一个新的项目(以保持与整个项目的一致性)。

最后,也许在networking中使用的一些程序(URL loguers(即:看看员工在非自动化网站上是否失去了时间,…)proxys,…)或任何其他types的工具都可以拦截查询。 有些人会在报告中显示您使用GET发送的参数,将其视为不同的网页。 但在这种情况下,可能不是你的问题,它是从一个项目变为另一个! ;)

无论您使用的是Ajax,HTML form还是curlGETPOST的区别都是一样的。 这里是相关的定义:

  • 得到
  • POST

一是一般信息。 如果您只读取数据,请使用GET ,如果您更改了数据库,txt文件等内容,请使用POST

但问题是,一些浏览器cachingGET结果。 我在IE7的AJAX请求有问题,但最终我发现浏览器cachingGET结果。 我重新考虑stream程并将我的请求更改为POST

所以,如果你不想caching,不要使用GET

(当然,你可以在GET操作中禁用caching,但是我不喜欢它)

如果传递的任何参数可能会在URL中混乱(例如空格),则使用POST。 否则,你可以使用GET。

一般来说,如果你只是传递一些微小的参数,你可以使用GET。 但为了传递用户提交的信息,如博客条目,文本等,使用POST是一个很好的做法。

还有一些框架完全依赖于基于细分市场的网站(比如site.com/products/133而不是site.com/products.php?id=333 ,这些框架没有设置安全的GETvariables,在这种情况下,当时使用POST。