2012-05-22 2 views
4

서버에서 응답을 다시 보내지 않으려는 경우 AJAX 호출을 수행하는 적절한 방법이 있습니까? 서버에 일부 데이터를 저장하길 원하지만 클라이언트는 응답 할 필요가 없습니다. 서버가 응답하지 않으면 AJAX 연결이 열린 상태로 유지되고 시간이 초과 될 때까지 응답을 기다리고 있습니까?응답이 필요없는 AJAX 호출을 만드는 올바른 방법은 무엇입니까?

다음과 같이 Javascript를 사용합니다. 그것은 xmlhttp.onreadystatechange 이벤트를 제외하고 전형적인 AJAX 호출입니다.

function SaveLabel() 
{ 
    var xmlhttp = null; 
    if (window.XMLHttpRequest) { 
     xmlhttp = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } else { 
     alert('Your browser does not support this feature.'); 
     return; 
    } 

    xmlhttp.open('GET', 'mypage.aspx?label=1'); 
    xmlhttp.send(null); 
} 

나는 비슷한 질문을 찾았지만, 정말 내 대답하지 않습니다 서버가 그것으로 끝날 때까지 당신은 상관없이 당신이 예상 여부 (오픈 연결을 유지할 필요가 Does Ajax connection disconnect at some point?

+4

어쨌든 응답을 원할 수도 있습니다. 원격 호출이 성공했다고 가정하지 마십시오. 네가 그렇게한다면 언젠가는 실패하고 너를 엉덩이에서 물어 뜯을거야. –

+1

2XX 응답을받지 못하면 서버가 데이터를 어떻게 저장했는지 어떻게 알 수 있습니까? 401 상태가 있다면? 또는 404? 아니면 500? – curioustechizen

+0

http://viralpatel.net/blogs/category/ajax - –

답변

5

또는 없을 것입니다).

왜냐하면 스크립트가 끝나기 전에 클라이언트가 연결을 끊으면 대부분의 웹 서버가 요청을 중단하기 때문입니다.

서버는 반환 데이터 에서처럼 "응답"할 필요가 없으며 단지 "반환"해야합니다.

즉 "Ajax 연결이 어느 시점에서 연결이 끊어 집니까?": 예, 서버가 연결을 종료하면 예.

그래서해야 할 일은 ASP (X) 스크립트가 작업을 마자 마자 종료하는 것입니다. 영원히 계속 실행하지 말고 데이터를 장기간의 처리가 필요한 헬퍼 데몬/서비스 등에 전달하십시오.

+0

을 살펴보십시오. 서버에서 Response.End와 같은 작업을하면 연결이 즉시 종료됩니다. 내 목표는 단순히 많은 AJAX 호출이있을 수있는 상황에서 사용자가 알 필요가없는 응답을 처리하지 못하도록 클라이언트를 저장하는 것입니다. – NJS

1

xmlhttp.onreadystatechange은 상태 변화를 수신 대기하는 수신기를 연결하는 XHR 개체의 이벤트 일뿐입니다. 페이지에 버튼이 있고 onclick 처리기를 추가하는 것은 동의어입니다.

핸들러가 있든 없든 동일한 작업을 수행합니다 (AJAX는 여전히 호출하며 버튼은 계속 클릭 할 수 있음). 유일한 차이점은 방금 일어난 일을 알지 못한다는 것입니다 (AJAX가 성공했는지 실패했는지 모를 때, 버튼을 클릭 한 시점을 알 수 없습니다).

관련 문제