HTTP 表单元素与 Fetch 和 XMLHttpRequest

HTTP Form Element vs Fetch and XMLHttpRequest

提问人:He llup 提问时间:11/6/2023 更新时间:11/6/2023 访问量:55

问:

我目前正在学习 Web 开发并遇到了 HTTP。让我感到困惑的一件事是如何准确地发出 HTTP 请求。在我观看的视频中,他们发送 HTTP 请求的主要方式是通过表单元素。做了更多的研究,我还发现 HTTP 请求可以通过 Fetch 和 XMLHttpRequest 手动完成。

所以我对这 3 个是如何工作的以及选择其中一个的好处有点困惑。如果我犯了任何错误,我深表歉意,但我对整个事情感到困惑。我尝试使用 Fetch 手动发送 PUT 和 POST 等 HTTP 请求,但这有点混乱。大多数教程都使用表单元素来做到这一点,所以现在我想知道这是否就是应该这样做的方式。

我还阅读了通过 JavaScript 发送表单,但它完全超出了我的脑海。

因此,我尝试查找各种教程和网站来解释HTML/CSS和Javascript的HTTP请求问题。我希望有人能解释一下 Forms、Fetch 和 XMLHttpRequest 之间的区别。如果在这种情况下适用,那么使用一个而不是另一个的权衡是什么。

JavaScript HTML 表单 xmlhttprequest fetch-api

评论

0赞 Jaromanda X 11/6/2023
简而言之,表单提交会加载一个全新的页面,而 XMLHttpRequest/fetch 仅用于更新页面的一部分。XHMHttpRequest 和 fetch 之间的区别在于 fetch 更新,并且在许多方面更易于使用。

答:

5赞 KODRz 11/6/2023 #1
  1. 形式:

    • 工作原理:表单是允许用户输入数据并将其提交到服务器的 HTML 元素。当您提交表单时,浏览器通常会向服务器发送 HTTP 请求。
    • 用例:表单适用于基本数据提交,尤其是当您有用户输入(如文本字段、复选框等)时。
    • 权衡:表单适用于简单情况,但当需要对请求进行更多控制或处理更复杂的数据时,表单可能不如其他方法灵活或强大。
  2. XMLHttp请求:

    • 工作原理:XMLHttpRequest 是一个较旧的 JavaScript API,用于发出 HTTP 请求。它提供了一种发送 HTTP 或 HTTPS 请求并直接在浏览器中处理响应的方法。
    • 用例:它是通用的,可以处理各种请求类型。它受到广泛支持,但与较新的选项相比,它具有更复杂的 API。
    • 权衡:与 Fetch 相比,它被认为有些过时,并且 API 不太直观。但是,它仍然用于某些场景,尤其是在处理较旧的代码库时。
  3. 获取 API:

    • 工作原理:Fetch 是一个用于发出 HTTP 请求的现代 JavaScript API。它提供了比 XMLHttpRequest 更简单、更强大的接口。
    • 用例:Fetch 是在现代 Web 开发中发出 HTTP 请求的推荐方法。与 XMLHttpRequest 相比,它支持 promise,并提供更简洁的语法。
    • 权衡:它可能在较旧的浏览器中没有得到广泛支持,但随着越来越多的浏览器不断更新,这个问题正在变得不那么重要。

权衡和建议:

  • 如果你正在处理一个新式项目,并且不需要支持较旧的浏览器,建议使用 Fetch API,因为它简单且灵活。
  • 如果您正在处理较旧的代码库或需要支持较旧的浏览器,您可能仍然会遇到正在使用的 XMLHttpRequest。
  • 表单适用于简单的数据提交,但可能缺乏更复杂方案所需的控制和灵活性。

总之,Fetch 通常是现代 Web 开发中发出 HTTP 请求的首选,因为它简单且功能强大,但了解 Forms 和 XMLHttpRequest 可能是有益的,尤其是在处理现有代码或特定用例时。

评论

0赞 starball 11/13/2023
出于好奇,您在撰写这篇回答文章时是否使用了任何生成式 AI?
1赞 ninjamar 11/6/2023 #2

我不是这个主题的专家,但有不同的用例,和FormfetchXMLHttpRequest

  1. fetch是首选,因为它较新,并允许更现代的接口来执行请求。与表单相比,您可以通过 JavaScript 选择正文/请求内容。XMLHttpRequest
  2. 当您想要将表单(用户输入)发送到后端服务器时,会使用表单 elemenent。表单元素根据其子元素(子元素)发送数据。发送表单也会导致页面重新加载。在以很少的开销发送数据时,我更喜欢 form 元素,因为它是最终用户将数据发送到服务器的方式。

顶级域名;如果需要新式 api,请使用,如果需要较旧的 api,请使用表单元素,如果要从一系列 html 元素发送数据,请使用表单元素fetchXMLHttpRequest