Php 我是否应该使用AJAX和JQuery';s复杂性和速度或GET';什么是简单?

Php 我是否应该使用AJAX和JQuery';s复杂性和速度或GET';什么是简单?,php,javascript,jquery,html,ajax,Php,Javascript,Jquery,Html,Ajax,如果用户尝试登录,但登录失败,则页面应向用户显示错误消息。我看到有两种主要方法可以做到这一点:在HTML页面上使用表单操作,如果登录信息不正确,则在php脚本中使用头重定向到登录页面,并使用类似loginfailed的$\u GET值。登录页面将检查该值,如果该值存在,将显示错误 我看到的第二种方法是根本不使用表单,而是使用JQuery捕获submit按钮并使用AJAX确定是否发生错误。php文件将回显一个状态,javascript文件将解释它,如果登录失败,它将使用JQuery将错误消息附加到

如果用户尝试登录,但登录失败,则页面应向用户显示错误消息。我看到有两种主要方法可以做到这一点:在HTML页面上使用表单操作,如果登录信息不正确,则在php脚本中使用头重定向到登录页面,并使用类似loginfailed的$\u GET值。登录页面将检查该值,如果该值存在,将显示错误

我看到的第二种方法是根本不使用表单,而是使用JQuery捕获submit按钮并使用AJAX确定是否发生错误。php文件将回显一个状态,javascript文件将解释它,如果登录失败,它将使用JQuery将错误消息附加到页面上

现在我将回顾一下每种方法的优缺点

方法1优点:

  • 非常简单,不需要JQuery、Javascript和AJAX
  • 错误状态也显示在URL中
方法1的缺点:

  • 由于存在标头调用,因此需要重定向。此外,必须重新加载登录页面。这是一个小页面,但它是一个重新加载
  • 状态消息显示在URL中。这意味着用户可以在URL中键入状态消息,并在页面上接收未实际发生的错误的错误消息。这是个问题吗?大概也许不是
方法2优点:

  • 因为它使用的是AJAX,所以不需要加载另一个URL,因此不会加载额外的页面
  • 此方法使用JQuery使用错误消息更新页面,因此不需要重定向
  • 错误状态不显示在URL中
方法2的缺点:

  • 比第一个解决方案复杂得多
  • 需要一个外部javascript文件,并且无论是否使用该文件,每次访问登录页面时都必须加载该文件
  • “提交”按钮的默认行为将被覆盖并取消。它唯一的行为来自与javascript文件的交互

你会怎么做?如果可能的话,我不想回答诸如“这取决于你的网站会有多少流量”之类的问题。

始终使用最简单的解决方案,直到/除非有很好的理由这样做。完成一些可能(也可能不)不太理想的事情要比最终完成一些镀金的事情要好


此外,我通常更喜欢遵循渐进式增强策略,这样一切都可以在没有Javascript的情况下工作,然后添加Javascript以改进其工作方式。这样做还有一个额外的好处,就是即使在禁用Javascript的情况下也能正常工作。

除非有很好的理由,否则请始终使用最简单的解决方案。完成一些可能(也可能不)不太理想的事情要比最终完成一些镀金的事情要好


此外,我通常更喜欢遵循渐进式增强策略,这样一切都可以在没有Javascript的情况下工作,然后添加Javascript以改进其工作方式。这还有一个额外的好处,就是功能性,即使禁用了Javascript。

我认为您没有理解这一点

  • 登录不是自给自足的。它用于更改站点的状态。但如果没有重新加载,它将不会被更改因此,无论如何都需要重新加载页面。否则用户必须手动重新加载才能访问授权部分

  • 登录是使用JQuery/AJAX的唯一站点功能吗?如果没有-为什么您担心只加载一次这个库,而很可能每个页面都会加载它

  • 由于各种原因,仍然存在禁用JS的客户端。一个好的web应用程序总是让这些客户机进来,即使是以功能更少为代价

后者是主要问题,也是最重要的问题。为什么要在两者之间做出选择为什么不同时使用两者?一个用于兼容性,另一个用于可用性

因此,我建议使用通行证代码而不是消息来创建基本功能。

另外,还可以选择使用一些AJAX工具来改进它,但无论如何,在成功登录的基础上使用基于JS的重新加载

我认为您无法理解这一点

  • 登录不是自给自足的。它用于更改站点的状态。但如果没有重新加载,它将不会被更改因此,无论如何都需要重新加载页面。否则用户必须手动重新加载才能访问授权部分

  • 登录是使用JQuery/AJAX的唯一站点功能吗?如果没有-为什么您担心只加载一次这个库,而很可能每个页面都会加载它

  • 由于各种原因,仍然存在禁用JS的客户端。一个好的web应用程序总是让这些客户机进来,即使是以功能更少为代价

后者是主要问题,也是最重要的问题。为什么要在两者之间做出选择为什么不同时使用两者?一个用于兼容性,另一个用于可用性

因此,我建议使用通行证代码而不是消息来创建基本功能。

还可以选择使用一些AJAX工具来改进它,但无论如何都要在成功登录的基础上使用基于JS的重新加载

是的@约翰:jQuery“con”列表中缺少的项目是“在禁用JavaScript的浏览器上无法工作”。:-)理想情况下,表单的操作将通过基本机制执行登录,然后如果启用了JavaScript,jQuery可以接管并通过Ajax处理它。这不必非常复杂;提交时只需向表单添加一个参数