【发布时间】:2015-03-12 21:55:46
【问题描述】:
我创建了一个带有进度条的新的多拖放文件上传控件。它适用于所有浏览器,除了 IE 10 及更高版本的问题。
当我在 IE 中上传文件时,大多数情况下 jquery 异步请求不会完成。它显示待处理。我可以看到它在 IE 网络调试器窗口中挂起。但在所有其他浏览器中它运行良好。我不知道这里有什么问题。最初我认为这可能与缓存有关。但是在服务器响应上添加以下参数后。它仍然处于待处理状态
context.Response.AppendHeader("Cache-Control", "no-cache"); // HTTP 1.1
context.Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1
for (var i = 0; i < files.length; i++) {
var data = new FormData();
data.append(files[i].name, files[i]);
uploadFile(handlerurl, data);
}
function uploadFile(handlerurl, formData) {
var jqXHR = $.ajax({
type: 'POST',
url: handlerurl,
contentType: false,
processData: false,
async: true,
cache: false,
data: formData,
xhr: function () { },
success: function (result, status, xhr) { },
error: function (xhr, status, error) { }
});
}
我按文件调用此函数。我不确定 IE 有什么问题。
编辑:调试后发现服务器断点会命中。但 context.Request.Files 中没有文件。没有从 jquery/AJAX 发送的文件。 您可以通过反复上传相同的文件来重现此问题。
【问题讨论】:
-
你用的是什么版本的IE?
-
你需要展示构建
formData对象的代码 -
尝试将内容类型更改为
multipart/form-data,并且在xhr 和成功定义之后我看不到逗号,并且$.ajax({ --- });没有正确关闭 -
试过了,还是可以重现同样的问题。
标签: jquery html internet-explorer xmlhttprequest jquery-file-upload