【问题标题】:FormData file, ajax doesn't post $_FILES in IE 11FormData 文件,ajax 不在 IE 11 中发布 $_FILES
【发布时间】:2015-07-08 03:22:07
【问题描述】:

我在 JavaScript 中有以下代码 (formdata),它在 Mozilla 和 Chrome 中正常工作。当我在 IE 11 中尝试它时,使用 ajax 不能很好地 POST。调用了success函数,但是$_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);
        }
}

【问题讨论】:

  • @guest271314 你能帮帮我吗?
  • 更新:它在使用 IE 的其他电脑上工作,除了我的 IE。我们有相同版本的 IE 11 v. 等。我重置为默认我的 iE 但仍然无法正常工作。
  • 你解决过这个问题吗?我面临同样的事情?
  • @Merijndk 是的。我不知道主要问题是什么。但它在其他电脑上工作。所有浏览器。只有在我的电脑上它不能正常工作

标签: javascript php form-data jqxhr jquery-html5uploader


【解决方案1】:

我有同样的问题。经过几天尝试各种参数后,我让它与 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 = ''; }); }); })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多