【发布时间】:2021-10-08 20:14:46
【问题描述】:
我有一个包含很多复选框的页面,例如:
<input type="checkbox" value="1">
<input type="checkbox" value="2">
<input type="checkbox" value="3">
<input type="checkbox" value="4">
<input type="checkbox" value="5">
<input type="checkbox" value="6">
<input type="checkbox" value="7">
另外,还有两个重要的数字:
<h2 id="total-1">100</h2>
<h2 id="total-2">200</h2>
用户点击复选框后 - 我必须使用复选框值向服务器发送 ajax 请求。 服务器执行一些逻辑并使用新的“total-1”、“total-2”数字发送响应。 我必须更改复选框背景颜色取决于此数字并更改数字。
问题来了: 每页大约有 20 个复选框,如果用户点击太快,由于异步 ajax 调用,我会遇到正确值的问题。
例如,如果用户取消选中所有复选框,则数字应为“0”。 我快速点击并收到此行为:
Total-1 Total-2
100 100 -> If all checkboxes are checked - numbers are same
72 30 -> Some logic, not matter what exactly
50 0 -> all checkboxes unchecked, but number is wrong.
如果我重新加载页面,我可以看到其中一个复选框仍处于选中状态... 正如所见,异步调用的问题。 我需要帮助来了解如何确保 ajax 以正确的顺序发送调用。 现在,我只是将“async”选项设置为“false”,但点击输入后会延迟
我的想法是统计所有请求,将它们保存到全局数组并检查此响应是否按顺序排列。
【问题讨论】:
-
当你提出一个新的请求时,取消之前的请求,这样它回来时就被忽略了。
标签: javascript jquery ajax asynchronous async.js