如果在第一次调用获得响应之前再次调用第一个ajax请求,如何停止它?

时间:2011-08-21 04:30:34

标签: php javascript jquery

在某些情况下,您的请求需要很长时间,因为 您的客户端互联网连接或服务器的一些问题 连接。因此,由于客户端不想等待,他点击了Ajax 再次链接,再次将请求发送到服务器,这会搞砸 以下内容:

  1. 在浏览器中渲染我们的网站,因为我们提供额外的 加载到浏览器。
  2. 如果第二个请求正确处理并且您向用户显示了该怎么办 该页面然后出现您的第一个错误消息 请求(说请求超时)上面加载正确的 内容和搞乱用户阅读正确的内容。
  3. 如果两次调用Ajax函数,我想停止第一个Ajax响应。我该怎么做?

2 个答案:

答案 0 :(得分:4)

  

所以我想在调用Ajax函数时停止第一个Ajax响应   两次

您真正想要的是在第一个请求正在进行时阻止第二个请求。

例如,您可能需要将Save按钮更改为Saving...,将其禁用(并添加一点进度轮)以向用户提供实时反馈。 (Facebook这样做)

关键是对用户的爱心反馈。如果用户对正在发生的事情一无所知,他们会认为没有发生任何事情。

您可能想要检查操作为什么需要很长时间

  • 如果这是一个复杂/耗时的操作,比如报告生成或文件上传,进度条应该
  • 如果这是因为客户端的互联网连接,请提前说明,例如Gmail:您的互联网连接速度很慢,而且此网站可能会很慢。更好的是,提供备用选项,更少/没有Ajax。
  • 你说因为我们给浏览器带来了额外的负担:这有点可疑。除非您要渲染大量的HTML,否则您不会向浏览器提供额外负载。仅将Ajax用于浏览器上的小更新。如果您希望进行大的更改,可能需要重新加载页面。

答案 1 :(得分:0)

当您使用某种形式的JavaScript开始时,如果看到该页面请求已经被跟踪,那么在该语言的庄园中隐藏或禁用该链接。例如,您可以让请求的ajax等待第二个变量,该变量将启用该链接,以便用户可以单击它。但是,直到从原始AJAX请求接收到该变量,其被禁用为单击,然后如果单击它则再次禁用并等待相同的变量再次返回。

想想一些开发人员如何禁用表单上的提交按钮,这样用户就无法在那里双重提交..这里有相同的概念。