在IE7中使用fineuploader时如何捕获onComplete事件

时间:2016-10-25 14:25:37

标签: javascript json internet-explorer-7 fine-uploader

我在局部视图中使用fineuploader,它将在单页中多次出现。所以会有多个fineuploader实例。它在IE 10中运行良好。 在IE 7中描述的是回退机制和显示上传按钮。 单击as autoupload为true后,它会成功上传文件。 在服务器端,我将生成fileId作为Guid并在Json中返回。因为IE 7不支持xhr 2;我没有得到onComplete事件,因为文件是以下载的形式返回json。

有什么方法我知道文件上传完成并返回生成的文件?

非常感谢您的帮助。

这是我的代码:

function InitializeDragDrop(id, isSingle, oldfiles, fieldId) {


    var itemLimit = isSingle == true ? 1 : 10;

    var restrictedUploader = new qq.FineUploader({
        //debug:true,
        element: document.getElementById(id),
        template: 'qq-template',
        callbacks: {
            onError: function(fileid, name, errorReason, xhr) {
                alert(errorReason);
            },
            onComplete: function(fileid, name, response, xhr) {
                debugger;
                if (response.success != '') {
                    fileid = response.newUuid;
                    addFileToList(fileid, fieldId);
                }
            },
            onDeleteComplete: function(fileid, xhr, isError) {
                if (!isError) {
                    fileid = $.parseJSON('[' + xhr.response + ']')[0].newUuid;
                    removeFileFromList(fileid, fieldId);
                }
            },
            onValidate: function(data, btnName) {
                var filename = data.name;
                var result = $.ajax({
                    type: "GET",
                    url: '../ReferredFieldSelector/CheckDuplicateFileName?fileName=' + filename,
                    async: false
                }).responseText;
                if (result == 'True') {
                    ShowDuplidateFilePopup(filename);
                    return false;
                }
            }
        },
        request: {
            endpoint: '@Url.Action("UploadFiles", "ReferredFieldSelector")',
            params: { fieldId: fieldId }
        },
        validation: {
            itemLimit: itemLimit,
            stopOnFirstInvalidFile: false
        },
        //messages: {
        //    tooManyItemsError : "Too many items ({netItems}) would be uploaded.  Item limit is {itemLimit}.",
        //},
        cors: {
            //all requests are expected to be cross-domain requests
            expected: true,

            //if you want cookies to be sent along with the request
            sendCredentials: true
        },
        deleteFile: {
            enabled: true,
            method: 'POST', // defaults to false
            endpoint: '@Url.Action("DeleteTempararyFiles", "ReferredFieldSelector")'
        }
    });

    if (!(typeof(oldfiles) === 'undefined')) {

        restrictedUploader.addInitialFiles(oldfiles);
    }

};

更新:

我已经尝试将内容类型更改为" text / plain"正如你的一篇文章所建议的那样。

但它给了我以下错误

Error IE7

我从服务器获得的响应如下:

HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Content-Type: text/plain; charset=utf-8
Server: Microsoft-IIS/10.0
X-AspNetMvc-Version: 4.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 25 Oct 2016 20:38:48 GMT
Content-Length: 75

{"success":true,"newUuid":"61bb0f01-e763-4649-b975-20fbc0eefa3d","name":""}

有什么错吗?

我需要新生成的newUuid用于客户端处理,因为我在临时位置上传到服务器,当我最终保存主表单时,我将文件从临时位置移动到最终位置进行此操作我将这些ID保存在客户端列表中,直到用户保存表单

如果我将调试器放入事件直到验证事件正常工作但在此之后onSubmit,onComplete,onAllcomplete未触发但文件已成功上传到服务器。

0 个答案:

没有答案