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

时间:2015-01-11 15:17:53

标签: javascript jquery 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... 
            }
        });

1 个答案:

答案 0 :(得分:-1)

上传文件的最大数量是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复制到另一个变量,并考虑每个文件的变量。