扫码关注官方订阅号
假如现在有三个选项卡,点击某个选项卡就通过ajax的方式加载出其中的内容,如果网速过慢导致内容没有加载出来,用户就点击其他的选项卡,如何保证加载出来的结果是正确的,和能否将请求延迟发送等?
两个方案:
ajax期间,其他tab全部disabled
设个变量loading,记录是否在请求,只有当loading为false时才发请求
1,首先需要确定的是用户需要连续发送两次请求 无论结果如何两次请求不干扰都需要有效,那我们是不应该阻止用户请求的。
2,如果第二次的请求需要第一次的请求结束后才能发起,那我们肯定是应该要阻止的。
3,至于楼主说的恶意点击,你是说不想服务器多次处理这样的请求么?那是服务器的事情了。
在进行与界面更新相关的AJAX操作时,应考虑在请求前对页面进行遮罩,请求完成后解除,以此来提升界面的响应性以及规避用户再次请求。
取消其他请求或者定时器控制请求都ok。不过我觉得也可以不用考虑取消。都加载回来然后缓存到本地,保证同一数据请求一次。当然也可以结合考虑
我只想说一点,ajax可以设置成同步请求,如果我做这个需求,我会在用户点击一个选项卡之后启动一个遮罩loading层,锁住UI,使用户无法点击其它的操作,然后超时、响应什么的你再具体处理
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
两个方案:
ajax期间,其他tab全部disabled
设个变量loading,记录是否在请求,只有当loading为false时才发请求
1,首先需要确定的是用户需要连续发送两次请求 无论结果如何两次请求不干扰都需要有效,那我们是不应该阻止用户请求的。
2,如果第二次的请求需要第一次的请求结束后才能发起,那我们肯定是应该要阻止的。
3,至于楼主说的恶意点击,你是说不想服务器多次处理这样的请求么?那是服务器的事情了。
在进行与界面更新相关的AJAX操作时,应考虑在请求前对页面进行遮罩,请求完成后解除,以此来提升界面的响应性以及规避用户再次请求。
取消其他请求或者定时器控制请求都ok。
不过我觉得也可以不用考虑取消。
都加载回来然后缓存到本地,保证同一数据请求一次。
当然也可以结合考虑
我只想说一点,ajax可以设置成同步请求,如果我做这个需求,我会在用户点击一个选项卡之后启动一个遮罩loading层,锁住UI,使用户无法点击其它的操作,然后超时、响应什么的你再具体处理