programing

다중 응답 AJAX 요청

closeapi 2023. 3. 7. 21:28
반응형

다중 응답 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

반응형