我最近开始使用ajax。在此之前,我主要使用表单提交将数据发送到服务器。但是使用ajax,我觉得我可以在大多数情况下避免表单提交。即使在我们需要从一个页面转到另一个页面的情况下(例如,如果我想在表格中点击客户链接时查看特定客户的详细信息,我可以对服务器进行ajax调用并获取html响应并附加它在当前页面上,之前通过表单提交处理,也有点慢。)
所以我想知道表格提交应该优先于ajax的东西吗?
答案 0 :(得分:2)
这实际上是一个非常广泛的问题,我会尝试更深入地回答它。
如果需要,有一些理由使用常规HTTP POST而不是Ajax:
HTTP POST是World 1.1指定的HTTP 1.1标准的一部分 Wide Web Consortium (W3C) 因此有效 在任何 HTTP 1.1兼容的浏览器中。
Ajax需要JavaScript支持。即使如果您的用户的浏览器支持JavaScript,不同的浏览器也会运行JavaScript 不同的引擎,您可能会遇到特定于浏览器的错误。
Ajax需要完全不同级别的错误处理。
让我解释一下:当用户向您的服务器发送POST请求并发生一些错误(例如连接丢失)时,用户将在浏览器中收到完全可见的错误,因为浏览器本身会通知用户出错的地方。当您使用Ajax时,您必须自己编写/实现所有这些错误处理。
示例:用户A正在访问您的博客,并希望使用您在博客上实施的Facebook OAUTH发表评论。用户在注释字段中输入注释文本并按下注释按钮和结果? 什么都没发生。 为什么?可能有多种原因,例如丢失连接,未处理的内容错误,服务器错误,兼容性错误,安全错误,如服务器证书丢失/无效,Facebook OAUTH通信错误等。
使用HTTP POST 执行相同的操作会导致用户看到错误。
更通用的Ajax / JavaScript问题
使用HTTP请求加载页面时,在加载页面时,它在浏览器中可见。 Ajax经常在页面加载后加载,因此浏览器不会通知用户资源正在加载。
如果您使用Ajax加载资源(例如博客帖子),则Google不会将其编入索引,因为Google不会运行JavaScript。因此,很少有人会找到您的网站/内容。
反应迟钝的设计; Ajax繁重的站点可能会导致CPU和网络流量密集,以至于页面实际上需要加载很多,而不是使用普通的旧HTML。
不幸的是,现代网站通常真的需要JavaScript。那么,如何处理以上内容?
在适用的情况下使用正确的技巧(http://en.wikipedia.org/wiki/KISS_principle)
处理错误。
使用Ajax进行POST时,如果您希望服务器的响应时间超过一秒,则通过显示加载动画为用户提供“触觉反馈”。
不引人注目的JavaScript 。
不显眼的JavaScript允许未启用JavaScript的用户至少使用您网站上的基本功能。
示例:用户A使用非JavaScript浏览器进入您的博客,然后点击评论按钮。将出现一个弹出窗口,其中用户A输入其评论并定期发布到服务器并重定向回您的博客帖子。 用户B使用支持JavaScript的浏览器进入您的博客。在您的博客文章下方,有一个评论字段和一个提交按钮。用户B输入她的评论并单击提交按钮,并向服务器发送Ajax请求。页面使用发布的评论进行更新,用户永远不必重定向。
基本上,通过始终加载常规的普通旧HTML页面,可以实现不显眼的JavaScript。加载页面后,您运行JavaScript替换您的html元素和JavaScript锚点和元素的链接。这样,不允许执行JavaScript的浏览器就可以使用您的网站。
<强>资源:强>
不引人注目的JavaScript
Ajax错误处理
我希望这能回答你的问题!
答案 1 :(得分:1)
大多数情况下,可以使用Ajax。但请记住,它需要额外的实施工作。
此外,还有一些案例仍然需要表格:
答案 2 :(得分:-1)
两者之间没有太大区别。 我通常更喜欢ajax而不是常规形式。
无论选择何种方法,重要的是如何确保安全。
例如,如果您有一个网站,您可以在帖子中接受数据。我可以制作一个表单并将数千行代码发布到您的网站,您的网站将接受这一点,因为您不知道数据来自何处。例如,您网站中的注册页面。
如果您将带有表单的md5哈希发送到用户浏览器并将其保存在会话中会更好。因此,当用户提交表单时,他/她会将哈希值发送回您的服务器,然后您可以根据保存的会话值对其进行检查。然后你会知道它是你的网站而不是第三人。