Jquery MVC在MVC中为进度条维护两个操作之间的值
我有一个ActionResult,它调用API并返回数据,但这需要很多时间,所以我想显示一个进度条,所以我对另一个ActionResult进行了ajax调用,并使用session维护它们之间的数据,但它不适用于多个请求,而且由于会话锁定而导致延迟。有更好的方法吗 我的第一个action2像循环一样执行,我需要action1中的循环值来显示进度并将其返回到ajax调用 我的代码是这样的:-Jquery MVC在MVC中为进度条维护两个操作之间的值,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我有一个ActionResult,它调用API并返回数据,但这需要很多时间,所以我想显示一个进度条,所以我对另一个ActionResult进行了ajax调用,并使用session维护它们之间的数据,但它不适用于多个请求,而且由于会话锁定而导致延迟。有更好的方法吗 我的第一个action2像循环一样执行,我需要action1中的循环值来显示进度并将其返回到ajax调用 我的代码是这样的:- setInterval(extendsession, 2000); function extend
setInterval(extendsession, 2000);
function extendsession() {
$.ajax({
url: '@Url.Action("Action1", "Controller")',
type: 'get',
async:true,
success: function (result) {
$("#status").html(result);
var progress = []; var progressPercentage;
if (result != "") {
progress = result.split(",");
progressPercentage = (progress[1]);
}
$("#progressbar").progressbar({
value: parseInt(progressPercentage)
});
},
});
行动是
public ActionResult Action2()
{
while(true)
do api call..
Session["ProgressPercentage"] //sava data in session
}
//below action is called by ajax to get progress
public string Action1()
{
return Session["ProgressPercentage"].toString();
}
编辑
不,实际上,我必须获取数据并在ajax中返回,因此我需要一种更好的方式在操作之间首先共享数据,使用会话会导致会话锁定等问题。检查更新的答案。使用setInterval时,临时数据会在多个请求中丢失@Rushee-你知道TempData使用会话,对吗?@ErikFunkenbusch是的,我知道
public ActionResult acetion1()
{ //Api call
TempData["Result"] = "ProgressPercentage";
}
public ActionResult action2()
{
var result= TempData["Result"];
return result;
}