1

我最近开始使用ajax。在此之前,我主要使用表单提交将数据发送到服务器。但是使用 ajax,我觉得在大多数情况下我们可以避免表单提交。即使在我们需要从一个页面转到另一个页面的情况下(例如,如果我想在单击表中的客户链接时查看特定客户的详细信息,我可以对服务器进行 ajax 调用并获取 html 响应并附加它在当前页面上,之前是通过表单提交处理的,这也有点慢)。

所以我想知道表单提交应该优先于ajax的东西?

4

3 回答 3

2

这实际上是一个非常广泛的问题,我会尝试更深入地回答它。

如果需要,有一些理由使用常规 HTTP POST 而不是 Ajax:

  1. HTTP POST 是 万维网联盟 (W3C)指定的 HTTP 1.1 标准的一部分, 因此适用于任何符合 HTTP 1.1 的浏览器。

  2. Ajax 需要 JavaScript 支持。即使用户的浏览器支持 JavaScript,不同的浏览器使用不同的引擎运行 JavaScript,您也可能会遇到特定于浏览器的错误。

  3. Ajax 需要完全不同级别的错误处理。

    让我解释一下:当用户向您的服务器发送 POST 请求并发生错误(例如连接丢失)时,用户将在浏览器中收到完全可见的错误,因为浏览器本身会通知用户出现问题。当您使用 Ajax 时,您必须自己编写/实现所有这些错误处理。

    示例:用户 A 正在访问您的博客并希望使用您在博客上实施的 Facebook OAUTH 发表评论。用户在评论字段中输入评论文本并按下评论按钮,结果如何?什么也没有发生为什么?可能有多种原因,例如连接丢失、未处理的内容错误、服务器错误、兼容性错误、安全错误(如服务器证书丢失/无效、Facebook OAUTH 通信错误等)。

    对 HTTP POST 执行相同的操作导致用户可见的错误。

更通用的 Ajax / JavaScript 问题

  1. 使用 HTTP 请求加载页面时,加载页面时它在浏览器中可见。Ajax 通常在页面加载加载,因此浏览器不会通知用户资源正在加载。

  2. 如果您使用 Ajax 加载资源(例如博客文章),它们将不会被 Google 索引,因为 Google 不运行 JavaScript。因此,更少的人会找到您的网站/内容。

  3. 无响应的响应式设计;Ajax 繁重的网站可能会占用大量 CPU 和网络流量,以至于加载页面实际上比使用普通的旧 HTML 所花费的时间要长得多。

不幸的是,现代网站通常确实需要 JavaScript。那么,如何处理上述情况呢?

  1. 在适用的情况下使用正确的技术(http://en.wikipedia.org/wiki/KISS_principle

  2. 处理错误。

  3. 使用 Ajax 进行 POST 时,如果您希望服务器的响应时间超过一秒,请通过显示加载动画来给用户“触觉反馈”。

  4. 不显眼的 JavaScript

    Unobtrusive JavaScript 允许未启用 JavaScript 的用户至少使用您网站上的基本功能。

    示例:用户 A 使用非 JavaScript 浏览器进入您的博客并单击评论按钮。出现一个弹出窗口,用户 A 在其中输入她的评论并定期向服务器发帖,然后被重定向回您的博客帖子。用户 B 使用支持 JavaScript 的浏览器进入您的博客。在您的博客文章下方,有一个评论字段和一个提交按钮。用户 B 输入她的评论并单击提交按钮,然后将 Ajax 请求发送到服务器。该页面会使用发布的评论进行更新,并且永远不必重定向用户。

    基本上,通过始终加载常规的普通旧 HTML 页面,可以实现不显眼的 JavaScript。加载页面后,您运行 JavaScript 将 html 元素和链接替换为 JavaScript 锚点和元素。这样,不允许执行 JavaScript 的浏览器可以使用您的站点。

资源:

不显眼的 JavaScript

Ajax 错误处理

我希望这回答了你的问题!

于 2013-03-04T00:29:31.400 回答
1

大多数情况下,可以使用 Ajax。但请记住,它需要额外的实施努力。

此外,在某些情况下仍需要表格:

  • 上传文件
  • 向其他服务器发送数据
  • 触发下载的表单
于 2013-03-03T09:21:58.987 回答
-1

两者没有太大区别。我通常更喜欢 ajax 而不是常规形式。

无论您选择哪种方法,重要的是如何使其安全。

例如,如果您有一个网站,您可以在其中接受帖子形式的数据。我可以制作一个表格并将数千行代码发布到您的网站,您的网站会接受,因为您不知道数据来自哪里。示例是您网站中的注册页面。

如果您将带有表单的 md5 哈希发送到用户浏览器并将其保存在会话中会更好。因此,当用户提交表单时,他/她会将哈希发送回您的服务器,您可以在那里检查保存的会话值。然后你会知道它是你的网站,而不是来自第三方。

于 2013-03-03T08:46:36.643 回答