怎样才能防止重复发送Ajax请求?
你的做法是在客户端进行限制。
客户端方案在同一个页面,也就是说用户没有离开某个页面,那么使用disabled的方式也是无可厚非的,并没有什么粗暴之说。
为什么会觉得这种方式不好呢?
问题分析按照常理来说,同一个用户在某一段时间内不应该对某个请求发起多次请求。
不过很难界定多短算一段时间之内,特别是考虑到网络延迟等因素。
也很难界定是否是用户自己的操作。
所以只要是在同一个界面,我们都认为用户不应该多次操作。
使按钮不可点击是一种方式,这种方式也很好用,假如用户都知道如何让按钮不变灰,那你能做的只是限制用户所有操作。
表单直接提交方式这是我非常不建议的方案,假如采用提交之后务必要跳转到另外一个页面,否则用户刷新当前页面会导致重复提交。
我认为你使用Ajax的方案就很棒,使按钮不可点击的方法也很不错,比起表单直接提交方案强百倍。
把请求结果缓存下来如果用户在某一段时间之内请求的是同一个URL,那么可以把之前缓存在客户端的数据直接取出来展示。
如果是当前页面就告诉他请过多久再请求。
服务端限制服务端最限制很麻烦,因为用户真的是有无聊者的,他们会不停刷新界面,不停点击,能怎么办?
像阿里巴巴那样,当一段时间之内请求超过一定次数之后,就验证用户的合法性,比如输入验证码。
记住这是限制机器请求,不是限制正常用户的无聊之举。
服务端缓存客户端可以缓存,服务端自然也可以缓存。
用户请求过的数据就缓存起来,下次请求直接返回。
评价你会发现你觉得暴力的方式才是这个世界上最完美的方式,假如你想采用其他方式,会发现需要大量工作,建议最好是在服务器集中式处理,这样可以一劳永逸。