我已经看过这个问题的多种解决方案,但没有什么能解决我的问题。
我正在使用ASP.NET MVC 4.5。
以下是我的步骤:
我正在使用它作为第一个调用(上传)(另一个Stack Overflow用户的赞美):
function uploadFiles() {
document.getElementById('fileupload').onsubmit = function () {
var formdata = new FormData(); //FormData object
var fileInput = document.getElementById('uploadfilenames');
//Iterating through each files selected in fileInput
for (i = 0; i < fileInput.files.length; i++) {
//Appending each file to FormData object
formdata.append(fileInput.files[i].name, fileInput.files[i]);
}
//Creating an XMLHttpRequest and sending
var xhr = new XMLHttpRequest();
xhr.open('POST', '/Dashboard/UploadFiles');
xhr.send(formdata);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
//alert(xhr.responseText);
}
}
return false;
}
reloadMain();
}
reloadMain()
功能是:
function reloadMain() {
$.ajax({
url: '/Dashboard/ThumbList/' + currentPath,
type: "GET",
timeout: 5000,
success: function (msg) {
$("#thumb-list").html(msg)
},
error: displayError("Unable to get file listing")
});
}
我注意到了这一点:
因此,似乎刷新ajax调用需要等到文件系统完成其工作。
你同意吗?如果是这样,我该怎么做呢?答案 0 :(得分:0)
您可以将XMLHttpRequest异步设置为false:
xhr.open('POST', '/Dashboard/UploadFiles', false);
或者您可以在回调中调用刷新函数:
var xhr = new XMLHttpRequest();
xhr.open('POST', '/Dashboard/UploadFiles');
xhr.send(formdata);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
reloadMain(); //Only refresh after the file post get a 200 response
}
}