使用formdata的Ajax文件上传

Ajax file upload using formdata Internet Explorer 10

本文关键字:文件 Ajax formdata 使用      更新时间:2023-09-26

我一直在寻找解决方案,但从未成功。我有一个ajax调用与formdata的图像上传到服务器。代码看起来像

$.ajax({
    type:'POST',
    url:'url',
    data:UPLOAD_DATA,
    processData:false,
    contentType:false,
    cache:false,
    timeout:10000,
    mimeType:'multipart/form-data',
    dataType:'json',
    success:function(data){
        if(data.success){
            alert(data.success);
        }else if(data.redirect){
        window.location.redirect=data.redirect;
        }else{
            alert(JSON.stringify(data));
        }
    }
});

发送时,控制台仍然显示"pending"。这段代码可以在除ie10以外的所有浏览器中运行。

以前的IE版本(8和更早版本)不接受对多部分表单的ajax提交的JSON响应。从而导致永远不会进入成功回调,并且在某些情况下建议用户将JSON响应作为文本文件下载。

我想IE10不会犯同样的错误。如果是这样,您可以考虑将JSON内容作为文本返回,将请求dataType设置为文本,并在成功回调中将文本响应解析回JSON客户端。

然而,在搜索头痛之前,请看看jQuery表单插件,它将处理ajax提交的表单(多部分或不),并提供回调,如有用的uploadProgress一个。

我很抱歉这是一个愚蠢的错误。我认为url作为相对路径在服务器上不支持在internet explorer,通过给出完整的https://"…"路径解决了问题。