表单提交后,页面会刷新,而刷新后,网页就是新的了,之前设置的isCommitted的值又会重新初始化为false,所以你这样做是无效的。
要想防止表单数据重复写到数据库,首先要想到的解决途径应该是从后台程序(比如你这的002asp)入手,只有后台程序把表单提交上来的数据与数据库的现有数据进行比较后再来决定是否写入数据库,这才是万无一失的解决之道。
如果一定要在前端来解决这个问题,那就要把isCommitted的值保存到本地(内存或硬盘),页面刷新后再把这个值读取出来,这样就知道表单是否已经提交过了。出于安全考虑,浏览器允许js程序读写的本地资源只有cookie或者localStorage,具体用法你自己百度
使用 pagination 组件进行分页时 ,
问题一:点击其他页码时刷新浏览器,页码默认跳转回到了第一页并没有停留在当前页码。
问题二:如果你并不是在第一页进行数据搜索分页,那么当你返回当前页,页面数据为离开时的数据,但页码显示为第一页,此时你再次点击刚才的页码,两页数据为一致,出现页码数据重复。
利用 localStorage 或者 sessionStorage 将跳转页面前的 currentPage 存储起来,当再次返回当前页的时候,在 created 生命周期里,获取到存储的 currentPage ,再进行加载,从而保持页面的一致性。
加入 v-if="paginationtotal != 0 是为了防止,取得总条数 total 之前, element-ui 的分页组件先行在页面加载完毕,导致 total 初始化默认为0,当总条数为0的时候,分页组件的页码默认为1。并且当 total 在 created 生命周期里正确取到数据后,分页组件也不会刷新。所以这就导致, 页面内容正确,但是页码高亮依旧是第一页。
把数据读取到 DataSet里面,每次分页显示显示的时候,只从DataSet读取10条或者20条数据(自己定义每次读取多少条数据,记录读取数据的行号,SQL里面的 row_number()就是行号),这样就会减少数据库访问次数~~~~
DataSet是存在于内存中的数据库,是断开式的数据库,即使数据库连接关闭了,DataSet的数据任然存在~~~
只是第一次需要把所有数据读取出来,这可能会有点耗时~~~
无论采取什么样的分页方法,其实都不外乎两种情况
第一种,是将数据库数据全部取出来,然后分页绑定 譬如pageddatasource
第二种,只取出页面所需的数据库数据
如果数据库容量千条以下,差别不大
上万条那就不一样了。
海量数据库基本上采用存储分页的方法
你可以搜索存储分页
列完全重复时,SQL05以上版本用CTE。SQL2000用临时表和辅助列
如:
T2:
ID Name
1 Name
1 Name
2 Name2
alter table t add row int identity
select from t2 a where row=(select min(row) from t2 where ID=aID and Name=aName)
update
当使用A字段排序时(A字段不是索引字段),不论是升序排列还是降序排列,如果不显示指定最后使用id字段排序,分页还是会出现重复数据问题。
当使用A字段排序时(A字段是索引字段),不论是升序排列还是降序排列,如果不显示指定最后使用id字段排序,分页还是会出现重复数据问题。
也就是说,不论字段A是不是索引字段,不论A是升序降序,如果不显示指定第二排序字段,数据库分页查询还是会出现重复问题。也就是说默认的主键排序并没有生效。
结果(result):
通过今天的案例,让我们学习到了,数据库使用order by给查询结果排序时是不稳定的,我们指定排序字段时应该尽量选择区分度比较大的字段,如果第一排序字段区分度不够大,则可以考虑增加第二排序字段。
同时,今天也借此机会验证了,MySQL数据库order by排序时,默认使用主键索引作为隐形的最后排序字段在这个分页过程中并没有生效。
以上就是关于html 防止表单内容重复到数据库 求助大佬们看看我这样写对吗为什么不起作用全部的内容,包括:html 防止表单内容重复到数据库 求助大佬们看看我这样写对吗为什么不起作用、关于vue+Element-ui项目分页刷新不停留在当前页码bug解决、aspxgridview每次分页都需要重新绑定 在数据量大的时候频繁的访问数据库这并不是一个好的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)