Javascript Form 数据刷新 小结

本文探讨了解决表单提交后刷新时显示数据不同步的问题。通过两种方法实现:一是使用ajax提交并回调刷新;二是增加隐藏的iframe进行刷新。这两种方案均可有效避免因数据持久化未完成导致的刷新问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开始写这篇文章之前,先对文章的标题 做一下说明,因为找不到一个合适的标题来表述 我想要写的东东,所以就按照自己的意思简单的写了一个。

现在是北京时间:15:53:57.25 有点想睡。嘿嘿。

好了言归正传,之所以写这篇文章是我在做项目的过程中遇到了 这样的问题,什么问题呢?比如:我们要做一个表单,然后 提交后 来刷新父窗体或者树之类的操作。这个时候问题就来了,我开始给这个问题定位为"灵异事件" ^_^,为什么这么说呢,因为在我当时做的时候没有发现这个问题,而是项目都做完了在测试的时候发现了这个问题。于是乎我跟测试人员展开一番争论,后来我胜利了,毕竟俺是开发人员,嘿嘿。心里当时暗喜,反驳的理由就是我的这边是好的,一直都是好的,在给测试人员看的时候也是好的,而测试人员那边时好时坏,所以测试人员心里也不是特别有底。不过在争论完后,我还是看了一下代码,怎么分析了一下这个问题出现的原因,后来发现 是执行js脚本的时候,由于表单数据需要提交到后台,然后持久化之后才会被查询到。但是如果后台持久化操作还没有完成,这个时候 前台已经开始刷新,那结果当然是没有看到刚才新增加的数据了。由此这个问题就产生了。

后来不管三七二十一在网上一顿搜索,结果都没有找到让自己太满意的答案。也许是我的搜索技术不行吧,^_^。既然确定了问题的原因所在,那就对症下药。

下面提供两种方法来解决这个问题:

(1)ajax提交

这种方法是我首先想到的,也是在用在项目中解决我上面说的问题的方法;主要在提交成功后,执行回调函数来进行数据刷新操作,就OK了!

(2)增加隐藏的iframe

这中方法可能大家不容易想到,因为很多人用iframe用的相对较少,尤其是在多个浏览器下运行的程序。其实和第一种类似,我也是在一个同事的提醒下才试验了这种方法。这种方其实和我们的普通表单提交没有什么不一样,主要的不一样之处在于如下:

<form name='frm' action='#' target='f1' >

 <iframe name='f1' id='f1' style='display:none'></iframe><!--这里就是不一样的地方-->

</form>

这样做的目的就是在表单提交后,将结果展示到iframe这里来。我们其实是在后台向前台输入了一段js代码,例如:

<script type='text/javascript'>alert('要开始刷新了哦,O(∩_∩)O');</script>

在这个返回的脚本里面写你要刷新代码,不过我个人不建议在后台输入这种js脚本代码,我感觉破坏了程序的结构。

其实我们可以自己加工加工,做到比较通用一些,不过我在这里就不详述如何做了。但解决问题的思路就是这样一个过程。

好了,我的两种建议的方法已经说完了。

其实网上还有其他的解决方法,例如把表单提交到一个页面进行处理 然后再后台进行跳转等等,这种方式对待不同的情况也是可以的。

以上我介绍的两点是我在项目中用到的解决方法。

好了,就说这么多了,写的不对的地方还请大家多多指教,有什么不明白的地方请留言或者给我发Email,都可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值