簡體   English   中英

jQuery多文件上傳問題

[英]Jquery multiple file upload issue

我正在使用Jquery File Upload插件上傳文件,這是從服務器獲取文件並生成HTML並插入到元素中的方法:

 getFilesToHolders:function (id,tablesName) {
            //attachecedFiles is a container for the generated html
            var attachedFiles = $('#IDAttachedfiles');
            // clears this area in case of multiple file upload
            attachedFiles.html('');
            attachments.getFiles(id,tablesName,function(data) {
            // getFiles just does an ajax request
                var template = '<li class="list-group-item"><b>File:</b> <span class="filenameClassAtt"></span> | <b>Extension:</b> <span class="label label-warning extensionAttachedFile"></span> <a href="" class="pull-right attachment-remove-class" style="padding-left:10px; color:#e74c3c;"><i class="fa fa-remove "></i></a>  <a class="pull-right download-attachment-class"  href=""><i class="fa fa-download"></i></a></li>';
                if (!data.length) {
                    attachedFiles.html('<h2>No files</h2>');
                    return;
                }
                $.each(data, function(index, val) {
                     var newTemp = $(template);
                     newTemp.find('.filenameClassAtt').html(val.url);
                     newTemp.find('.extensionAttachedFile').html(val.extension);
                     newTemp.find('.download-attachment-class').attr({
                        'id': 'IDAttachmentDownload-'+val.id,
                        'data-tabel-name': val.table_name,
                        'data-record-id' :val.record_id
                     });;
                     newTemp.find('.attachment-remove-class').attr({
                        'id': 'IDAttachmentDelete-'+val.id,
                        'data-tabel-name': val.table_name,
                        'data-record-id' :val.record_id
                     });
                     attachedFiles.append(newTemp);
                });
            });
        },

這是在文件上傳后執行的方法:

done: function (e, data) {
            var data = data.result;
            if (data.success == 1) { 
               attachments.getFilesToHolders(data.record_id,data.table_name);
               swal(data.data,false,'success');
            }else{

               app.helper.displayErrors(data);
            }

        },

並且此方法利用上述方法在上傳后將文件加載到頁面上,因此,這里的問題是當我上傳多個文件時,done方法會執行多次,並且由於某種原因,上傳后生成的文件列表會乘以即使getFilesToHolders方法每次將div稱為attachedFiles.html('');都會清除div,我上傳的文件也是如此attachedFiles.html(''); 所以我不知道為什么列表被復制,這是sceenshot: 在此處輸入圖片說明

在這里,我只上傳了4個文件,但頁面上有16個文件,從服務器端來看還可以,在上傳后再獲取文件時,它也可以正常顯示4之4

問題出在異步性上, done函數是異步觸發的,所以我的getFile函數在“隊列”中,解決方法是放置attachedFiles.html(''); 在getFile函數中,因此它將擦除所有內容並重新開始,並填充div;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM