代码之家  ›  专栏  ›  技术社区  ›  L Y E S - C H I O U K H Dumitru Boaghi

在IE9/Angular 5/TypeScript上使用FormData,无需Ajax或jQuery

  •  0
  • L Y E S - C H I O U K H Dumitru Boaghi  · 技术社区  · 7 年前

    在我的应用程序中 Angular 5 / Typescript ,我有一个 UploadFile 组件看起来像:

    component.html

    ....
    <form #formUpload id="formUpload">
       <input type="file" class="input-file-ghost" (change)="onChangeFile($event.target.files)">
    </form>
    ....
    

    component.ts

    export class UploadFileComponent implements OnInit {
    
      @Input() .....;
      @Output() filesAdded = new EventEmitter<File>();
      @ViewChild('formUpload') formUpload: ElementRef;
      ...
    
      constructor() { .... }
    
      ngOnInit() { .... }
    
      onChangeFile(files: File[]) { ..... }
    }
    

    Use case

    <app-upload-file
            [uploadFileConfig]="...."
            (filesAdded)="....">
     </app-upload-file>
    
    **********
    
    formCvData: FormData = new FormData();
    onFileUploaded($event) {
      const uploaded = $event;
      this.formLmData.set('.....', uploaded, uploaded.name);
    }
    

    在Chrome和Mozilla浏览器上使用此组件时工作正常,但当我继续 IE 9 我有以下错误:

    “FormData”未定义

    我查看了git问题 Stackblitz 项目方面,我还没有找到任何能够用现代解决方案解决问题的方法。

    重要事项: 我正在寻找一种不使用 jQuery 也没有 AJAX

    提前感谢您的帮助。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Randy Casburn    7 年前

    FormData在IE9中不可用:

    https://developer.mozilla.org/en-US/docs/Web/API/FormData#Browser_compatibility

    您必须自己手动收集表单数据并对其进行编码。