对象不支持属性或方法'删除' ie11(reactjs)

时间:2018-05-10 12:27:23

标签: javascript reactjs file internet-explorer-11

add() {

      if (this.state.password.length == 0) {
        this.props.dispatch(ShowAlert('warning','Please enter password',false,false))
        return;
      }
      let obj = this.props.fileToSend
      obj.delete('password')
      obj.append('password',this.state.password)
      console.log(obj)
      this.props.dispatch(SendFile(obj))

    //  this.props.close();
    }

我需要删除字段密码并在我将文件发送到服务器之前添加新密码,在所有浏览器中工作正常,IE11除外。我可以使用什么黑客? 我创建的文件像

let fd = new FormData();

2 个答案:

答案 0 :(得分:2)

Internet Explorer(source)不支持FormData.delete方法。 从FormData对象中删除条目的唯一方法是创建一个新实例并复制除要删除的项之外的所有键/值。

可悲的是,Internet Explorer也不支持任何FormData.entries()FormData.keys()和其他访问方法。这意味着您必须手动将值存储在单独的对象中才能重新创建FormData对象。

答案 1 :(得分:0)

不是很干净,但有两种选择。

您可以将var sortedDayObj={}; Object.keys(dayObj) .sort((a,b) => daySorterMap[a] - daySorterMap[b]) .forEach(value=>sortedDayObj[value]= dayObj[value]) 值覆盖为null。

或者,您可以从现有数据创建新对象并省略password属性。

即:

obj.password