2015-01-11 251 views
0

我使用ajax上传多个file.user可以在同一时间上传多个文件,如果我只能为一个上传文件放弃ajax, 这是AJAX:在多个ajax请求中放弃一个ajax请求

areq=$.ajax({ 
       url: $(this).attr('action'), 
       xhr: function() { // custom xhr (is the best) 
        var xhr = new XMLHttpRequest(); 
        //load 
        xhr.upload.addEventListener("load", function(evt) { 
         $("#msg").text('success !'); 
        }, false); 
        //error 
        xhr.upload.addEventListener("error", function(evt) { 
         // show progress like example 
         $("#msg").text('error !'); 
        }, false); 
        //abort 
        xhr.upload.addEventListener("abort", function(evt) { 
         $("#msg").text('abort !'); 
        }, false); 
        return xhr; 
       }, 
      type: 'post', 
      processData: false, 
      contentType: false, 
      data: fd, 
      success: function(data) { 
       // do something... 
      } 
     }); 
+0

为什么你认为使用自定义XHR对象是最好的,当一个jQuery提供的服务已经有一个'abort'方法并且还可以为你提供进度更新? – Alnitak

+0

我想创建一个取消上传文件的按钮 – adib16

+0

你必须为每个文件使用一个单独的'.ajax'调用 – Alnitak

回答

-1

用于上传文件最大数目是10.so我在第一JS文件的定义此变量: VAR SSSSS,formaa,可成形,FORMAC,FORMAD,formae,formaf,formag, formah,formai,formaj; ,节省$就到SSSSS。之后$就将此开关:

stra=$(this).parent().index(); 
     switch (stra) { 
      case 10: 
       formaa = sssss; 
       break; 
      case 9: 
       formab = sssss; 
       break; 
      case 8: 
       formac = sssss; 
       break; 
      case 7: 
       formad = sssss; 
       break; 
      case 6: 
       formae = sssss; 
       break; 
      case 5: 
       formaf = sssss; 
       break; 
      case 4: 
       formag = sssss; 
       break; 
      case 3: 
       formah = sssss ; 
       break; 
      case 2: 
       formai = sssss; 
       break; 
      case 1: 
       formaj = sssss; 
       break; 
     } 

斯特拉是文件的数量是取消按钮,此功能uploading.when用户点击称为:

$("form span#stop").click(function(){ 
      stra=$(this).parent().parent().index(); 
      switch (stra) { 
      case 10: 
       formaa.abort() ; 
       break; 
      case 9: 
       formab.abort(); 
       break; 
      case 8: 
       formac.abort(); 
       break; 
      case 7: 
       formad.abort(); 
       break; 
      case 6: 
       formae.abort(); 
       break; 
      case 5: 
       formaf.abort(); 
       break; 
      case 4: 
       formag.abort(); 
       break; 
      case 3: 
       formah.abort(); 
       break; 
      case 2: 
       formai.abort(); 
       break; 
      case 1: 
       formaj.abort(); 
       break; 
      } 
     }); 

stra也是上传文件的数量。因此,我将$ .ajax复制到另一个变量,并且该变量考虑每个文件。

+0

所以你要为每个文件启动一个单独的'.ajax()'调用?你没听说过阵列吗? – Alnitak