2015-01-11 233 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