HTML表单与XMLHTTPRequest?

时间:2017-02-17 18:23:17

标签: javascript html forms

使用HTML表单元素和XMLHTTPRequest进行POST后有什么区别?

为什么表单允许重定向到另一个网页,但显然XMLHTTPRequest不能?

如果我正在发出POST请求,我应该能够制定具有相同属性的请求并期望相同的行为。

3 个答案:

答案 0 :(得分:4)

  

使用HTML表单元素进行POST后有什么区别   使用XMLHTTPRequest?

XMLHttpRequest允许执行异步操作,不会阻止客户端的UI。使用HTML表单时,在执行操作时会阻止客户端。

另外(正如你所指出的),HTML表单提交会导致页面重新加载到指定的URL,而XHR则不会 - 它只会导致返回数据。返回的数据可能只是页面内容的一部分,因此XHR不会导致整页重新加载。它允许我们动态更新页面的一部分。

  

为什么表单允许重定向到另一个网页,但显然是一个   XMLHTTPRequest不能?

XHR可以为其配置“成功”回调函数。操作成功完成后,回调函数可以执行任何操作,包括重定向。

  

如果我正在发出POST请求,我应该能够制定请求   具有相同的属性并期望相同的行为。

您是否应该将HTML请求配置为与XHR请求相同?如果是这样,那么不,事实并非如此。可以将XHR请求配置为非常精细的级别(用户名和密码,数据类型,缓存,成功回调,故障回调等)。这(以及XHR的异步性质)是XHR受欢迎的原因。

答案 1 :(得分:4)

我认为你应该介绍一下简短的历史和演变。

回到过去,当HTML HTTP很简单时,人们习惯发布表单,但它有一些问题吗?

  1. 每次提交请求
  2. 转到服务器获取已处理的响应
  3. 来到客户端(整个页面重新呈现/重定向到新页面)
  4. 好的,但如果用户没有输入正确的表格值怎么办?网络使用速度慢,所以英雄JavaScript

    1. 现在使用提交表单
    2. 在客户端/浏览器上验证
    3. 用户立即收到错误消息(服务器不需要为不正确的请求刻录处理器。可以提供更多请求)
    4. 但是,当提交信息时,页面刷新或重定向意味着需要时间来呈现和加载它
    5. 现在聪明人带着XMLHTTPRequest/AJAX为什么要刷新页面原因?

      1. 如果页面保持不变并且只有所需信息可以传输到服务器怎么办?
      2. 现在在当前页面下,只有服务器响应可以读取成功或失败。
      3. 仅更新页面的一部分以指示是否在服务器上执行操作。从而带来更好的用户体验。
      4. 有了更好的浏览器和服务器,这在SPA(单页应用程序)中得到了发展,还有更多。

        导入一个是使用一些代码,

        甚至XHR也可以重定向到其他页面或重新加载页面窗口.location ='' 并且还可以防止FORM重定向ex e.preventDefault()

        检查AJAX相关信息,它可以帮助您了解部分原因以及为什么它如此有趣。

        希望有所帮助

答案 2 :(得分:1)

XmlHttpRequest不会重新加载页面,HTML表单会这样做。这是主要的区别