0

我在 JavaScript 中有以下代码(formdata),它在 Mozilla 和 Chrome 中正常工作。当我在IE 11中尝试它时,使用 ajax 不能很好地发布。成功函数被调用,但$_FILES在服务器端为空。

file = _files[i][j];
if(j<_files[i].length){

    if(file){
    var data = new FormData(); 
    data.append("uploadedimages", file);
    console.log("formdata:"+data);
    progressElement = $('#divimg_'+i+'_'+j);
    progressElement.css('visibility','visible').hide().fadeIn('500');

    $.ajax({
        url: "<?php echo base_url();?>"+"upload/do_upload",
        data: data,
        cache: false,
        contentType: false,
        processData: false,
        type: 'POST',
        success: function(data){
            console.log(data);
            j++;
            if(j<_files[i].length){
                uploadmore(i,j);
            }else{
                i++;
                uploadme(i,0);
            } 
        },
        xhr: function()
        {
            var xhr = new window.XMLHttpRequest();
            xhr.upload.addEventListener( 'progress', function( e )
            {
                if( e.lengthComputable )
                {
                    // Append progress percentage.
                    var progressValue = ( e.loaded / e.total ) * 100;
                    console.log( i + ':' + progressValue );
                    progressElement.find( 'input' ).val( progressValue ).change();

                    // Listen for clicks on the cancel icon.
                    $('#stopupload').click( function()
                    {
                        if( progressElement.hasClass( 'working' ) )
                        {
                            xhr.abort();
                            progressElement.fadeOut(500);
                        }
                    });

                    if( progressValue == 100 )
                    {
                        progressElement.removeClass( 'working' );
                    }
                }
            }, false);
            return xhr;
        }
    });  
    } 
    else{
        console.log("FILE ERROR!");
        j++;
        uploadmore(i,j);
        }
}
4

1 回答 1

0

我遇到过同样的问题。经过几天尝试各种参数后,我让它与 IE 11 一起工作。一定要添加form.serialize()到数据组件中。我还添加了接收 URL 的完整 URL

data        : formdata ? formdata : form.serialize(),
        $('#btnUploadFile').on('点击', function () {

                var formdata = new FormData();
                var 文件 = $("#fileUpload").get(0).files;

                // 将上传的图片内容添加到表单数据集合中
                如果(文件长度> 0){
                    formdata.append("UploadedImage", files[0]);
                }
                别的
                {
                    alert("请选择要上传的文件。")
                    返回;
                }

                var loc = window.location;
                var uploadReceiverURL;

                if (loc.host.indexOf("local")>-1)
                {
                    uploadReceiverURL = loc.protocol + '//' + loc.host + "/uploadReceiver.aspx";
                }
                别的
                {
                    uploadReceiverURL = loc.protocol + '//' + loc.host + "/rolechanges/uploadReceiver.aspx";
                }

                console.log('uploadReceiverURL: ' + uploadReceiverURL);
                var ajaxRequest = $.ajax({
                    网址:上传接收者网址,
                    数据:表格数据?表单数据:form.serialize(),
                    缓存:假,
                    内容类型:假,
                    处理数据:假,
                    类型:'POST',
                    成功:函数(数据,文本状态,jqXHR)
                    {
                        console.log('成功:' + textStatus);
                    },
                    错误:函数(jqXHR,textStatus,errorThrown)
                    {
                        console.log('错误:' + textStatus);
                    }
                });
                ajaxRequest.done(function (xhr, textStatus) {      
                    document.getElementById('fileUpload').value = '';
                });
            });

        })
于 2018-06-28T20:45:02.067 回答