繁体   English   中英

中止多个ajax请求中的一个ajax请求

[英]abort one ajax request in multiple ajax request

我使用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... 
            }
        });

上传文件的最大数量为10。因此,我在js文件的第一个定义了此变量:var sssss,formaa,formab,formac,formad,formae,formaf,formag,formah,formai,formaj; 并保存$ .ajax到sssss。$ .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;
        }

stra是正在上传的文件数。当用户单击“取消”按钮时,此函数称为:

$("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复制到另一个变量,该变量将考虑每个文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM