2017-02-17 55 views
0

POSTing with HTML Form元素和XMLHTTPRequest之间有什么区别?HTML表单与XMLHTTPRequest?

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

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

回答

1

XmlHttpRequest不会重新加载页面,HTML表单会。这是主要差异

+0

主要区别在于XHR是异步的。 –

2

POSTing with HTML Form元素和 与XMLHTTPRequest有什么区别?

XMLHttpRequest允许执行异步操作,它不会阻塞客户端的UI。使用HTML表单时,客户端在执行操作时被阻止。另外(正如您指出的那样),HTML表单提交会导致页面重新加载到指定的URL,而XHR不会 - - 它仅导致数据被返回。返回的数据可能只是页面内容的一部分,所以XHR不会导致整个页面重新加载。它允许我们动态更新页面的一部分。

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

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

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

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

0

我想你应该走过一个简短的历史和演变。

早在HTML HTTP简单的时候,人们用来发布表单,但它有一些问题?

  1. 每次请求提交
  2. 去服务器得到处理响应
  3. 来客户端(整个页面重新渲染/重定向到新的页面)

好,但如果用户没有什么输入正确的表单值?NET USE是缓慢的当时所以排在英雄的JavaScript

  1. 现在使用的提交表单
  2. 在客户机/浏览器,它得到确认
  3. 用户得到错误信息马上和(服务器并不需要刻录处理器不正确的请求。可以服务更多的请求)
  4. 但仍时提交的信息页面刷新或重定向手段的时间进行渲染并加载它

现在聪明人想出了XMLHTTPRequest/AJAX为什么刷新页面为什么?

  1. 如果页面保持不变并且只有需要的信息可以传输到服务器?
  2. 现在在当前页面下只有服务器响应可以读取成功或失败。
  3. 如果在服务器上完成操作,只更新页面的一部分以指示。从而带来更好的用户体验。

随着更好的浏览器和服务器的发展,SPA(单页应用)以及更多。

导入一个与一些代码,

甚至XHR可以重定向至其他网页或重新加载页面前了window.location =“” 并且还可以从重定向前e.preventDefault()

可以防止FORM

检查AJAX的相关信息,它可以帮助你理解为什么部分以及为什么它非常有趣。

希望有帮助