2017-04-21 1 views
1

서버 측에서 Ajax 요청의 HTML 진행률 표시 줄 (또는 모든 구성 요소)을 업데이트하는 방법이 있습니까?ASP.NET MVC Ajax 요청에서 HTML 구성 요소를 업데이트하십시오.

(시뮬레이션) 예를 들어

:

자바 스크립트 :

$.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 }); 
} 

감사

+2

아니요. 서버 측 코드는 웹 브라우저를 조작 할 수 없으며 응답 만 반환 할 수 있습니다. 당신이하려고하는 것은 SignalR과 같은 것에 대한 합리적인 유스 케이스처럼 들리며, 이는 클라이언트 측 코드와 서버 측 코드 사이에서보다 "실시간"경험을 용이하게합니다. – David

답변

1

당신은 서버와 comunicate 수에 SignalR을 사용할 수 있으며 상태 표시 줄을 업데이트 할 수 있도록 작업 상태 가져 오기

하지만이 같은 재귀 함수와의 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 YourController의 개체와 JsonResult을 반환하는 성공 및 백분율 속성이 포함되어 있습니다.