在做测试提交表单时发现如果前面提交过一次后再去提交,后台会走两次,前台也会输出两次
第一种情况 以submit触发ajax
原因:在触发ajax请求服务器时,ajax是同步处理的,这个期间客户端不能做任何处理,当 ajax 执行完毕才会继续执行其他代码。期间提交表单则又会请求一次服务器,如果你ajax和表单请求同一个页面就会出现执行2次的问题,比如说插入两次数据
第二种情况 以click事件触发ajax
解决方法一:
改成$("#export1").unbind(‘click’).bind(‘click’,function(){…});
unbind()为了清除这个dom之前绑定的事件,click 不是 替换原有的function 而是接着添加,所以才会执行次数越来越多
解决方法二:
$("#myDiv").click(function(e){
e.stopPropagation(); //表示阻止向父元素冒泡
e.preventDefault(); //阻止 方法阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交或者a标签)。
});
解决方法三:
添加个事件标识 在点击第二次时则直接结束事件 return false
举个栗子:
$('#updateAndSave').click(function () {
var isClicked = false //定义个点击标识
var telText=/^1\d{10}$/;
if(!isClicked){
//第一次点击直接过