2015-01-11 4 views
0

Я использую 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

Я хочу создать buttom для отмены загрузки файла – adib16

+0

вам придется использовать отдельный вызов '$ .ajax' для каждого файла – Alnitak

ответ

-1

максимальное количество для загрузки файла является 10.so я определить эту переменную на первом из JS файла: вар SSSSS, formaa, formab, FORMAC, formad, formae, formaf, Formag, formah, formai, formaj; и сэкономить $ .ajax в SSSSS .after $ .ajax поставить этот переключатель:

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; 
      } 
     }); 

STR также является номером загрузки файла .so я копирую $ .ajax в другую переменную и эту переменную рассматривают для каждого файла.

+0

так что вы _are_ инициируете отдельный '$ .ajax()' вызов для каждого файла? Вы когда-нибудь слышали о массивах? – Alnitak

Смежные вопросы