ajax发布请求和表单发布请求有什么区别?

时间:2019-07-09 15:28:38

标签: javascript html ajax xmlhttprequest

例如,在服务器端,我使用flask处理这些发布请求,相同的代码可以处理两个类型的请求,但是在客户端,ajax请求不会让浏览器刷新整个页面,而是表单做。 那么在深度上有什么区别,某些标头字段不一样吗?或者是其他东西?? 谢谢!

4 个答案:

答案 0 :(得分:1)

没有什么区别,只是AJAX是异步的,如首字母缩写所示,这意味着它不会阻止其他任何程序运行。表单和AJAX请求都发送POST请求,唯一的区别是浏览器使用表单POST请求的响应来加载新页面,该页面随AJAX请求的响应传递到JavaScript中的回调。

答案 1 :(得分:0)

Ajax请求是在后台异步发送并由您的javascript代码处理的xhr请求,而表单请求是普通请求,浏览器页面以及浏览器呈现的响应将被重新加载

答案 2 :(得分:0)

Form和Ajax请求以相同的方式发送到后面。对于Flask,您捕获了POST请求,并且如果Ajax包含表单中的所有相同信息,它将是相同的。

提交表单(并导致页面刷新)的是"onsubmit" event表单,该表单触发了DOM。如果您愿意,可以实际上将其覆盖。这通常是通过"PreventDefault" function完成的。我相信这个问题已经在网站上报道过几次。您可能刚刚错过了表单中“ onsubmit”事件的概念。

答案 3 :(得分:0)

提交HTML表单会构造一个HTTP请求,该HTTP请求将根据为HTML表单定义的规则进行格式设置,并使浏览器导航到其收到的响应。

使用JavaScript发出请求可以使程序构造更多种请求-包括添加自定义标头,以不同方式(例如JSON)格式化数据,并且与HTML表单构造请求的方式相同-并导致使用JavaScript处理的响应。

通常,在编写服务器端代码时,您无需关心请求是来自JavaScript还是HTML表单。在某些情况下,您只能这样做,但只能XY Problem

例如,您可能希望使用HTML文档来响应常规表单提交(因为浏览器正在导航至该文档),但是希望使用JSON响应Ajax请求(因为您想轻松地对其进行处理)。在这种情况下,JavaScript应该设置一个Accept request header来告诉服务器它希望使用JSON响应。然后,您编写的服务器端代码应查看该代码,以确定是否首选HTML或JSON(不必担心为什么首选HTML或JSON)。