Javascript ASP.NET MVC根据Ajax请求更新HTML组件
有没有办法通过服务器端更新Ajax请求中的HTML进度条(或任何组件) 例如(模拟): JavaScript:Javascript ASP.NET MVC根据Ajax请求更新HTML组件,javascript,c#,ajax,asp.net-mvc,Javascript,C#,Ajax,Asp.net Mvc,有没有办法通过服务器端更新Ajax请求中的HTML进度条(或任何组件) 例如(模拟): JavaScript: $.ajax({ url: '/Sales/SaveStoreByType', type: 'POST', data: { locationId: id }, success: function (result) { ... }, error: function (xhr, ajaxOptions, thrownError) { ... }
$.ajax({
url: '/Sales/SaveStoreByType',
type: 'POST',
data: {
locationId: id
},
success: function (result) {
...
},
error: function (xhr, ajaxOptions, thrownError) {
...
},
update: function(percent){
MyProgressBar('update',percent);
}
});
和服务器端:
public IActionResult SaveStoreByType(short locationId)
{
foreach (var item in collection)
{
//here simule a heavy process and update progress bar
i++;
ajaxrequest.update(i);
}
return Json(new { error = 0 });
}
谢谢您可以使用signar与服务器通信,并获取任务状态,以便更新de statusbar 但您也可以使用递归函数和setTimeout()函数在循环中发出请求,如下所示:
function viewProgress() {
$.get('@Url.Action("GetTaskStatus", "YourController")', function (data) {
if(data.Success){
//finished
}
else{
//update your status bar from data.Percent
setTimeout(viewProgress(), 1000);
}
});
}
您的控制器中必须有一个操作:GetTaskStatus,该操作返回一个JsonResult,该对象包含Success和Percent属性否。服务器端代码无法操作web浏览器,它只能返回响应。您试图做的事情听起来像是signar之类的合理用例,它有助于在客户端和服务器端代码之间实现更“实时”的体验。