我的页面上有一个表单。当您提交表单时,我将Ajax调用发送到服务器。服务器端是C#asp.net
然后服务器上的控制器正在做某事并将当前状态保存到Session中。 ajax呼叫大约需要3分钟。
所以我想设置一个ajax轮询脚本,它会每隔5秒向服务器发送一次ajax请求,并从Session读取当前的stat并更新前端。
问题是ajax轮询调用正在等待第一个ajax完成。
因此,当第一个ajax运行并在服务器端执行某些操作并更新Session中的当前状态时,我想要另一个轮询脚本,同时从会话中读取此状态,但问题是它只是等待第一个ajax到完成。
这里有什么问题。我对会话知之甚少,只是无法弄清问题是什么以及如何使其发挥作用。
function installation () {
var intervalID = setInterval(function () { checkStatus() }, 5000);
var data = {//some data};
$.post("/WebDomain/Installation", data, function (result) {
clearInterval(intervalID);
console.log(result);
});
};
function checkStatus()
{
$.post("/WebDomain/GetInstallStatus", function (result) {
console.log(result.Status);
});
}
答案 0 :(得分:0)
function installation () {
var data = {//some data};
$.post("/WebDomain/Installation", data, function (result) {
setTimeout(function(){ checkStatus(); }, 5000);
});
};
function checkStatus()
{
$.post("/WebDomain/GetInstallStatus", function (result) {
installation ();
});
}
$(document).ready(function(){
setTimeout(function(){ checkStatus(); }, 5000);
});
希望它会有所帮助
Explanation: after 5sec of your dom is ready checkStatus() will call,
if success only installation (); will call
In installation (); success we are again calling checkStatus().
now you can check some condition for breaking this iterations