在ASP.NET MVC 3中,我试图使用html.beginform助手上传文件,例如:
<% using (Html.BeginForm("ImportFile", "Home", new { someId = Id }, FormMethod.Post, new { enctype="multipart/form-data" } )) %>
从上传过程中,我需要返回状态代码(例如"成功"或"失败"),并在UI上显示适当的警报。一种方法是异步调用表单操作,从JS调用每2秒钟的状态代码。我该如何将其称为异步?还是有其他方法可以实施此操作?
预先感谢。
牢记http协议上的限制,以窥视文件上传的过程。假设您的ImportFile助手可以披露此类信息,并且可以通过RESTFUL服务访问ImportStatus.aspx,这是您可以提取其状态的方法:
var statuschecker=setInterval(){
var rq=xmlHTTPRequestObject();
rq.open('GET','importstatus.aspx',true);
rq.onreadystatechange=function(){
if (rq.readyState==4&&rq.status==200){
if (rq.responseText=='2'){
clearInterval(statuschecker); //stop the updater
statuschecker=null; //prevent memory leak
return;
}
if (rq.responseText=='1'){
//display that it's still being uploaded
}
}//xhr status
}
rq.send(null);
}, 1000); //poll every second
在您的Web服务中,终止过程时返回2。收到术语信号时,回电函数应终止观察者间隔/计时器。