当前位置: 首页 > 面试题库 >

POST与Ajax通话

满才
2023-03-14
问题内容

既然大多数现代浏览器都支持AJAX和客户端请求,而无需执行POST,那么POST(表单发布)的作用是什么?

在某些情况下或一般规则下,始终将POST优先于XmlHttpRequest吗?

POST所做的只是将可变键值对放在服务器头内部。我能想到的POST的优点是大量的数据和移动浏览器。还有很多我想念的吗?

注意,我知道您可以通过AJAX调用执行POST,我主要是在谈论<form>标签


问题答案:

这个问题有点棘手,因为它包含了两个概念。第一个是POSTING,第二个是Ajax。与GETting相比,POST是一种具有不同实现和语义的HTTP方法。Ajax或XmlHttpRequest在正常的请求/导航中具有其对应对象。您可以将POST或GET用于XmlHttpRequest以及常规导航和表单提交(嗯,POST始终是“表单提交”)。XmlHttpRequest和普通请求之间的区别在于,普通请求将页面替换为新页面。

您可以只使用Ajax编写几乎任何网站,以获取数据并更改DOM。这主要是Gmail的工作方式。传统意义上没有“表单提交”。但是仍然存在GET和POST,因为服务器和浏览器对结果的解释不同。GET应该是幂等的;POST用于更改服务器状态的操作。例如,一个ecom交易应为POST。使用Ajax时,这不会改变,因为您希望代理服务器也了解这是POST,并且它们不应该尝试缓存响应。

使用GET vs
POST也有优点和缺点。您无法为POST结果添加书签,因为参数是隐藏的。由于IE仅支持约2000个字符,因此无法获取带有无限长度参数值的内容。

与常规提交相比,使用Ajax也有缺点;您无法将结果页面添加为书签(因为页面尚未更改);后退按钮将无法正常工作。但是使用Ajax,您可以最大程度地减少传输的数据,还可以方便地更新页面(例如监视长时间进程的状态),而不会引起闪烁或刷新。

总而言之,Ajax和传统表单提交这两种请求类型都可以与GET和POST一起使用,并且每种都有优点和缺点。两种类型都无法做其他任何事情,因此您可以预见在可预见的将来会混合使用。



 类似资料:
  • 问题内容: 我正在尝试使用$ .post方法调用Web服务,我已经使用$ .ajax方法使它工作了: 但是,当我将相同的方法移到$ .post方法中时,它将无法工作: 我想念什么? 问题答案: 它不起作用,因为在您的方法中,您无法将请求的内容类型设置为。因此,不可能使用调用ASP.NET PageMethod,因为ASP.NET PageMethod需要JSON请求。您将不得不使用。 我将只修改,

  • 问题内容: 为什么AJAX中存在GET和POST请求,因为它无论如何都不会影响页面URL?通过将敏感数据传递到AJAX中的GET上,有什么区别呢? 问题答案: 您应该根据Web服务的要求使用正确的HTTP动词。 处理 Collection URI时,例如: GET :列出集合的成员,并带有其成员URI以便进一步导航。例如,列出所有待售汽车。 PUT :定义为“将整个集合替换为另一个集合”。 POS

  • 问题内容: 我有一个链接: 触发ajax调用 但是在控制台中,我看到以下内容: 处理了ajax文件,但是POST数据为空,并且没有执行成功操作,因此将其用零发布,并且类未更改 我凝视着……有什么明显的东西吗? 问题答案: 不会自动传递给AJAX回调函数。您可以使用参数告诉jQuery通过它:

  • 问题内容: 我在通过Jquery / ajax POST提交带有图像字段的表单(Django表单)时遇到一些问题。即时通讯在imagefield上返回“ Field required”验证错误。 我一直尝试通过添加formData来尝试不同的解决方案,但到目前为止没有任何结果。我在正确的轨道上吗?请指出正确的方向。谢谢! 更新:我可以将imagefield设置为required = false,但

  • 问题内容: 我正在尝试使用POST方法编写XMLHttpRequest。我过去已经使用GET方法设法使用XMLHttpRequest,但是在POST方面却很挣扎。 这是我的代码: 它基本上调用PHP脚本,然后将一些信息添加到数据库中。 问题答案: 好吧,我已经设法对它进行了排序。 奇怪的原因虽然可能与沙箱安全性有关,但是我没有使用完整的URL地址,而是使用了文件的相对路径,现在可以使用了。 谢谢大

  • 问题内容: 我使用以下代码将数据发送到MailChimp新闻列表(API v3)。每次我从函数中删除时,它都会尝试通过GET发布数据,并正确发送数据(在MailChimp API仪表板中可以确定响应)。在浏览器(FF)中进行测试时,我得到一个响应为“ true”的.part文件。 我将我的头发拔了出来,任何见识都将受到赞赏。 提前致谢, JN 问题答案: 主要问题是jc在您的原始帖子中评论了什么-