【问题标题】:What is the difference between ajax post request and form post request?ajax 发布请求和表单发布请求有什么区别?
【发布时间】:2019-11-19 05:04:30
【问题描述】:

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

【问题讨论】:

标签: javascript html ajax xmlhttprequest


【解决方案1】:

提交 HTML 表单会构造一个根据为 HTML 表单定义的规则格式化的 HTTP 请求,并使浏览器导航到它获得的响应。

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

通常,在编写服务器端代码时,您不需要关心请求来自 JavaScript 还是 HTML 表单。在某些情况下,您可以这样做,但仅限于 XY Problem

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

【讨论】:

    【解决方案2】:

    Form 和 Ajax 请求以相同的方式发送到后端。对于 Flask,您捕获 POST 请求,如果 Ajax 包含来自表单的所有相同信息,则它会是相同的。

    提交表单(并导致页面更新)的是"onsubmit" event 表单触发到DOM。如果您愿意,这实际上可以被覆盖。这通常通过"PreventDefault" function 完成。我相信这已经在网站上多次介绍过。您可能只是错过了表单中“onsubmit”事件的概念。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • "an xhr request" — 或者 fetch,或者 JSON,或者一个不可见的 iframe hack,等等。
      【解决方案4】:

      没有区别,只是 AJAX 是,正如首字母缩略词所暗示的那样,是异步的,这意味着它不会阻止其他任何东西运行。表单和 AJAX 请求都发送 POST 请求,唯一的区别是浏览器使用表单 POST 请求的响应来加载新页面,其中 AJAX 请求的响应被传递给 JavaScript 中的回调。

      【讨论】:

      • 所以我能理解区别是因为浏览器处理两种类型的请求的方式不同吗?
      • @XuWang 没错
      猜你喜欢
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      相关资源
      最近更新 更多