IE11,360浏览器FormData 方法entries

背景:前端将表单内容append到FormData对象,再转为Json传递到后端解析:

//formdata转为json
function formData2Json(formData) {
  var jsonData = {};
  for (var entry of formData.entries()) {
    jsonData[entry[0]] = entry[1];
  }
  return JSON.stringify(jsonData);
}

但是报异常:

分析:遍历FormData中的数据方法entries,一般高版本浏览器能使用,如谷歌,火狐等,但在IE11及其以下版本中entries方法并不存在,而且FormData仅能使用 append 方法。但是Edge版本是正常的。如下图所示:

IE11,360浏览器FormData 方法entries_第1张图片

在网上查询了一堆资料后还是没找到简单有效的解决方法,我的思路是不用FormData来传递数据。

FormData方式:

 //提交
      submit() {
        this.$refs["form"].validate((valid) => {
          if (valid) {
            let data = new FormData();
            for (let key in this.form) {
              data.append(`${key}`, this.form[key] === null ? '' : this.form[key]);
            }
            if (this.form.id) {
              const id = this.form.id;
              this.updateById({data, id}).then((res) => {
                this.$notify.success({
                  title: '提示',
                  message: "操作成功"
                });
                this.dialogFormVisible = false
                this.search();
              });
            }
          }
        })
      },

 改为传统方式:

 //提交
      submit() {
        this.$refs["form"].validate((valid) => {
          if (valid) {
            let data={
              sjqfsj: this.form.sjqfsj,
              sjddsj: this.form.sjddsj,
              hw: this.form.hw,
              yj: this.form.yj,
              xl: this.form.xl,
              xljs: this.form.xljs,
              cr: this.form.cr,
              et: this.form.et,
              ye: this.form.ye
            };
            if (this.form.id) {
              const id = this.form.id;
              this.updateById({data, id}).then((res) => {
                this.$notify.success({
                  title: '提示',
                  message: "操作成功"
                });
                this.dialogFormVisible = false
                this.search();
              });
            }
          }
        })
      },
JSON.stringify将data转为json即可。如果大家有更好的方法请告知,谢谢。 

你可能感兴趣的:(vue)