我使用的是我正在使用的代码,它在chrome中运行良好,但在IE中,看起来onreadystatechenge没有触发。
如何让它跨浏览器工作。我在IE中看到你必须在发送之前放置onreadystatechange事件,但那不起作用。
此处的警报未触发。是的,它是成功的。
if (xhr.status==200 && xhr.readyState==4)
{
alert("DONE!");
}
这是整个请求。
function SendFile(evt)
{
var xhr = new XMLHttpRequest();
var data = new FormData();
var files = $("#FileUpload1").get(0).files;
for (var i = 0; i < files.length; i++)
{
data.append(files[i].name, files[i]);
}
xhr.upload.addEventListener("progress", function (evt)
{
if (evt.lengthComputable)
{
var progress = Math.round(evt.loaded * 100 / evt.total);
$("#progressbar").progressbar("value", progress);
}
}, false);
xhr.open("POST", "Handler.ashx");
xhr.onreadystatechange=function ()
{
if (xhr.status==200 && xhr.readyState==4)
{
alert("DONE!");
}
}
xhr.send(data);
$("#progressbar").progressbar({
max: 100,
change: function (evt, ui)
{
$("#progresslabel").text($("#progressbar").progressbar("value") + "%");
},
complete: function (evt, ui)
{
$("#progresslabel").text("File upload successful!");
GetID();
}
});
}
试着没有运气。
xhr.onload = function ()
{
if (xhr.readyState == 4 && xhr.status==200)
{
alert("IE DONE!");
}
}
答案 0 :(得分:2)
您的XMLHttpRequest
对象可能正在缓存。
尝试:
var myNoCachePage = document.location + '?' + new Date().getTime();
xhr.open("GET", myNoCachePage, true); // Prevent IE11 from caching
xhr.send();
答案 1 :(得分:1)
显然,IE 11(我假设您正在测试的内容已被破坏)已移除script.onreadystatechange
,转而使用script.onload
。