在javascript函数下方上传所选文件并更新网格。它在Firefox中完美运行,但在IE11中没有。 观察到它没有在addEventListener中执行“ESignature / Registration”函数。我在注册功能上保持了突破点。它没有受到打击而没有刷新网格。请指导我解决这个问题
$("#lnkAddAttachment").click(function (e) {
if (document.getElementById("txtFile").files[0] != null) {
oFiles = document.getElementById("txtFile").files[0];
nFiles = oFiles.size;
var selectedFile = document.getElementById("txtFile").files[0];
var xhr = new XMLHttpRequest();
var fd = new FormData();
var url = '@Url.Content("~/")' + "ESignature/getFile";
fd.append("file", document.getElementById('txtFile').files[0]);
$("#loadingwrapper").fadeIn();
xhr.open("POST", url, true);
xhr.send(fd);
xhr.addEventListener("load", function (event) {
var url = '@Url.Content("~/")' + "ESignature/Registration";
$('#gridAttachments').load(url + ' #gridAttachments');
$("#loadingwrapper").fadeOut();
}, false);
$('#txtDescription').val('');
$('#txtFile').val('');
return false;
}
});
答案 0 :(得分:1)
由于你已经明确使用jQuery,我建议使用$.ajax
而不是直接使用XMLHttpRequest
,这几乎肯定会解决问题。
但是,如果您因某些原因想直接使用XMLHttpRequest
,则很可能需要使用readystatechange
而不是load
;也许IE11不支持load
,或者在它决定用于你的页面的任何兼容性设置中都不支持它。如果您的网页是以某种较旧的兼容模式加载的,那么它在addEventListener
对象上也不会有XMLHttpRequest
。
由于您未与任何人共享XMLHttpRequest
个实例,处理这两个潜在问题的简单方法是:
xhr.onreadystatechange = function () {
if (xhr.readystate === 4) { // Also consider checking `status`
var url = '@Url.Content("~/")' + "ESignature/Registration";
$('#gridAttachments').load(url + ' #gridAttachments');
$("#loadingwrapper").fadeOut();
}
};
正如Chris points out一样,将移到上方{/ 1}}。
但是又一次:你正在使用一个为你处理这些事情的库。使用它。
答案 1 :(得分:1)
Firefox支持“addEventListener”方法,但在IE中可能不支持。您需要使用“onreadystatechange”来处理完成请求的事件。另外,在调用“send”之前,您需要设置“onreadystatechange”处理程序;否则,在设置处理程序之前,对服务器的请求可能会完成。
答案 2 :(得分:0)
我刚刚更改了网址,如下所示。有效。问题是每当url命中IE时,它从缓存中获取并且它不会命中注册功能。为了使URL每次都是唯一的,添加了一个名为check to url的新变量。它的值每次都是唯一的,并且点击注册功能。
var url = '@Url.Content("~/")' + "ESignature/Registration?check=" + new Date().getTime();
完整代码:
$("#lnkAddAttachment").click(function (e) {
if (document.getElementById("txtFile").files[0] != null) {
oFiles = document.getElementById("txtFile").files[0];
nFiles = oFiles.size;
var selectedFile = document.getElementById("txtFile").files[0];
var xhr = new XMLHttpRequest();
var fd = new FormData();
var url = '@Url.Content("~/")' + "ESignature/getFile";
fd.append("file", document.getElementById('txtFile').files[0]);
$("#loadingwrapper").fadeIn();
xhr.open("POST", url, true);
xhr.send(fd);
xhr.addEventListener("load", function (event) {
var url = '@Url.Content("~/")' + "ESignature/Registration?check=" + new Date().getTime();
$('#gridAttachments').load(url + ' #gridAttachments');
$("#loadingwrapper").fadeOut();
}, false);
$('#txtDescription').val('');
$('#txtFile').val('');
return false;
}
});
谢谢T.J.克劳德和克里斯为你提供了投入。