form表单提交或上传附件 页面刷新问题,后台返回JSON完美处理方案

一般我们用的第三方库基本上都是内部封装好的,也都是这种方式,比如jquery 的 AjaxSubmt,他在上传的时候就是临时生成iframe form 用户上传,要不然他也做不到。

<form style="margin: 20px 30px 10px 45px;" class="layui-form userForm" action="user/save"
          enctype="multipart/form-data"
          method="post"
          target="formSubmitFrame"
          lay-filter="userForm">
        <iframe id="formSubmitFrame" name="formSubmitFrame" src="about:blank" style="display:none;"></iframe>
  
    <input type="file" name="file" />
   
</form>

<script>
//我用的layui form 其他方式都是一样的。
  form.on('submit(saveUserBtn)', function (data) {
                            
    var a = setInterval(function () {
      var formSubmitFrame = document.getElementById('formSubmitFrame').contentWindow;
      let pre = formSubmitFrame.document.getElementsByTagName('pre');
      if (pre && pre.length > 0 && !!pre[0].innerText) {
        clearInterval(a);
        var data = JSON.parse(pre[0].innerText);
        if (data && data.success) {
          layer.close(index);
          page.renderTable();
          return showSuccessMsg('保存成功!');
        } else {
          return showErrorMsg(data.msg || '保存失败!');
        }
      }
    }, 1);
    return true;
  });
</script>

这里是后台返回的JSON,如果返回字符串也是如此,但是判断的内容可能就需要改下了。我没试过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值