form button 点击后,页面闪屏,然后后台显示提交了20多次,有没有大神知道是什么原因

提问 未结 11 362
左左598
悬赏:50飞吻
版本:layui layui-v2.2.45 浏览器:
html 页面按钮
<button class="layui-btn" type="button" id="button1" lay-submit="" lay-filter="addOrderSure" >提交</button>
js:
form.on('submit(addOrderSure)', function (data) {
//调用ajax
$.ajax({
url: url,
data: {info: JSON.stringify(data.field) },
success: function (result) {}
})

})
回帖
  • 0ERROR
    2019-12-6
    胸太大压到回车/空格 了?
    1 回复
  • 这段代码没能表达出你为什么一次点击提交20多次,请排查你的其他代码
    0 回复
  • @HiTerry 这段代码用了一年多,每天用几百次都是没问题的。就突然出现闪屏后后台显示提交了20多次
    0 回复
  • @HiTerry 我表单提交成功后,我会将表单中的内容reset().所以,我觉得是不是我ajax的async属性的值为false同步执行,应该能预防这种情况
    0 回复
  • 你要先把问题找到了。 这个预防方案。指标不治本。。
    代码本身看不出来什么问题,你需要排查其他地方。另外你说的这个闪屏是怎么个意思,能不能复现。
    可以打开F12一直挂着。 当出现你说的闪屏时,看看network标签项里是不是真的发送了20多次。
    0 回复
  • @我就填特殊字符 就是复现不了,就是有客户点击完此按钮后,说浏览器突然在那不停的闪屏。然后后台打出的日志显示这个接口请求了20多次。
    0 回复
  • @我就填特殊字符 此按钮每天会点上百次,已经快两年了。就出现过一次这种情况。所以这种应该是属于意外特殊情况,用async:false应该可以吧。用的就是layui的form表单提交,代码我觉得本身是没有问题的。
    0 回复
  • 是不是他浏览器网络不通畅,然后点了20多次,一会网络缓过来了,一起提交的
    0 回复
  • @HiTerry 如果说是这种情况,那我用async:false同步执行,请求后锁住浏览器。因为在请求成功后我会清空form的。form很多值是必填的。这样的话,即使点再多次,也只会执行一次。
    0 回复
  • 那代码本身应该是没问题的。。 估计就是客户自己点多了。
    用async:false不太好,浏览器直接卡那了。 你最好还是限制按钮点击一次后直到请求响应回来中间这段时间不能再点。 用layer.load()也是可以的嘛
    0 回复