有关于用javaScript点击一次提交数据却发送了两次或者多次的问题

xiaoxiao2021-02-28  96

以前遇到一个问题,在系统的接收任务时,只惦记了一次接受任务,但是后台走了两次接受任务的流程,导致数据新增了两次数据,后边的流程无法进行,因为项目之前测试的时候一直都没有这个问题,到了二次开发才有了这个现象,一直不明白为什么点击一次会发送两次数据,最终觉得下面这个说法应该靠谱点:

下面是别人的代码,但是大同小异:

function add(){ $('#winAdd').window('open'); // 打开增加窗体 $("#btnAdd").click(function(){ var status = $('#statusAdd').combobox('getValue'); //状态 var menuAdd =$('#menuAdd').combobox('getValue'); //父菜单 if(menuAdd=="添加为父菜单"){ menuAdd="0"; } $.ajax({ url:"addMenuAction", data:{ "m.mid":$("#idAdd").val(), "m.mname":$("#nameAdd").val(), "m.mhref":$("#mhref").val(), "m.mpid":menuAdd, "m.mstatus":status }, type:"POST", success:function(result){ $.messager.show({ title:result, msg:'消息将在5秒后关闭。', timeout:5000, showType:'slide' }); //关闭修改窗口 $('#winAdd').window('close'); $("#bg").datagrid('reload'); }, error:function(){ $.messager.alert('警告','操作错误'); } }); }); }我的按钮用的button,不过和这个问题的发生都无关

<a id="btnAdd" href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-ok'">新增</a>问题发生的原因:

是每次执行add方法时 ,都给btnAdd绑定了一个 click事件。 解决方式如下两种方式 1,每次执行add时先$('#btnAdd').unbind('click');解绑原有的click事件。 2,把绑定的事件放在$(function(){})中加载完成只绑一次 window这个对象在浏览器的缓存中存储位置跟其他对象存储位置不一样,当你关闭一个window时,其他对象资源占用的空间释放了,但是window占用的空间并没有释放,所以在第二次创建一个window时,加上原来那一个就变成了两个所以同一个提交动作就会提交两次,这样创建n个window就会提交n次。

$("#btnAdd").click(function(){改成

$("#btnAdd").unbind('click').click(function(){ 先解绑原有的click事件,

所以说,如果是利用弹窗页面进行接受任务,则,每打开一次窗口就会绑定一个click事件,所以解决办法如上了。

转载请注明原文地址: https://www.6miu.com/read-74698.html

最新回复(0)