我使用jquery ajax和progressbar(xhr)上传文件。
$.ajax({
url: "../Services/upload.ashx",
type: "POST",
data: formData,
cache: false,
contentType: false,
processData: false,
timeout: 60000
xhr: function () {
var myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) {
myXhr.upload.addEventListener('progress', that.progressHandling, false);
}
return myXhr;
}
Upload.prototype.progressHandling = function (event) {
var percent = 0;
var position = event.loaded || event.position;
var total = event.total;
if (event.lengthComputable) {
percent = Math.ceil(position / total * 100);
}
};
Progressbar非常完美。文件上传到服务器但上传后需要一些处理服务器端。我尝试通过发出另一个jquery ajax请求来检查此服务器端处理的状态。
问题在于此次调用的响应。我无法收到此回复,因为第一个(文件上传)仍在等待处理。
恕我直言这两个请求是异步的,那么为什么如果我长时间运行服务器端处理文件上传阻止我接收来自其他ajax调用的任何其他响应?
答案 0 :(得分:0)
问题不在于jquery ajax。问题是服务器siade - 使用通用处理程序。它使用会话,因此它会阻止任何其他请求。
请查看此主题以获取更多信息:
当请求进入时,Session拥有一个独占锁,以便来自同一会话的其他请求不会并行运行,并且必须一个接一个地运行。