다중 응답 AJAX 요청
1개의 AJAX 요구에 여러 응답을 할 수 있는 방법이 있습니까?
예를 들어, 서버에 GET 요구를 하면 계산에 시간이 오래 걸리면 어떻게 하면 서버에서 진척상황에 대한 데이터를 얻을 수 있는 응답을 가끔 보내게 할 수 있을까요?
만약 그렇다면, 누군가가 Jquery와 함께, 서버가 그것을 수행할 수 있는 메커니즘에 대한 설명을 게시할 수 있을까요?
2개의 Ajax 콜(프로세스를 실행하는 콜과 진행 상황을 정기적으로 폴링하는 콜)을 사용하여 이를 구현할 수 있습니다.
서버측:
public class ProgressInfo
{
public int Percent {get;set;}
public bool Done {get;set;}
}
public JsonResult DoCalculation(string id)
{
ProgressInfo progress = new ProgressInfo();
if(!string.IsNullOrEmpty(id))
{
Session[id] = progress;
}
//periodicly update progress
progress.Percent++;
}
public JsonResult GetProgress(string id)
{
ProgressInfo progress;
if(string.IsNullOrEmpty(id)
|| (progress = Session[id] as ProgressInfo) == null)
{
return Json(new {
success = false
});
}
if(progress.done)
{
Session.Remove(id);
}
return Json(new {
success = true,
done = progress.done,
percent = progress.Percent
});
}
클라이언트 측:
var progressID = Math.random();
function doCalculation() {
$.post('<%=Url.Action("DoCalcluation")%>/' + progressID);
setTimeout(pollProgress, 1000);
}
function pollProgress() {
$.post('<%=Url.Action("GetProgress")%>/' + progressID, function(response){
if(!response.success) {
alert('Cannot find progress');
return;
}
if(response.done) {
alert('Done!');
} else {
alert('Progress at ' + response.precent + '%');
setTimeout(pollProgress, 1000 /*1 second*/);
}
}, 'json');
}
빠른 답변: 아니요, 불가능합니다.
더 많은 응답을 받으려면 더 많은 요청을 보내야 합니다.
리버스 에이잭스 또는 comet push라고도 불리는 것이 필요할 것 같기 때문에 서버측 코딩의 도움이 필요할 가능성이 높습니다.서버측에서 어떤 언어를 사용하는지는 모르겠지만 기본적인 생각은 브라우저가 (서버측에서) 엔드리스 루프를 사용할 수 있는 한 http 응답을 지연시키고 연결이 활성화되어 있는 동안 데이터를 푸시하는 것입니다.
http://code.google.com/p/google-web-toolkit-incubator/wiki/ServerPushFAQ 에서 확인하실 수 있습니다.
xajax를 보면 여러 응답을 되돌려 보낼 수 있고 특정 영역으로 리디렉션할 수 있습니다.이 점에서 xajax는 jQuery보다 훨씬 낫다.나는 하나의 요청을 할 수 있고 서버는 HTML, JavaScript, calls 등의 여러 응답을 포함하는 응답을 구성할 수 있습니다.append, replace 등의 옵션과 함께 이것저것 넣을 수도 있습니다.아주 멋져요.jQuery가 이렇게 하면 jQuery로 완전히 전환할 수 있습니다.이것 때문에 전환이 안 돼요.
Ajax 요구 ----------------------------------------------------------------
실제로 할 수 있는 건.
응답 데이터를 확인하고 가져온 데이터에 따라 Different 액션을 수행합니다.
언급URL : https://stackoverflow.com/questions/6475238/multiple-response-ajax-request
'programing' 카테고리의 다른 글
$location / html5 모드와 해시방 모드 전환 / 링크 변경 (0) | 2023.03.07 |
---|---|
아래로 스크롤할 때 플로팅 메뉴바를 작성하는 방법 (0) | 2023.03.07 |
Gson에서 JSON 문자열: 큰따옴표 제거 (0) | 2023.03.07 |
팬더 컬럼 내의 JSON 데이터를 새 컬럼으로 변환하는 방법 (0) | 2023.03.02 |
버전 4.0.1 이후 create-module-app이 작동하지 않음 (0) | 2023.03.02 |