2009-11-27 5 views
1

데이터를 1 일에서 1 년 내내 반환 할 수있는 내부 시스템 보고서가 있습니다. 이 때문에 보고서는 모든 것을 생성하는 데 0.5 초 또는 45 초 이상 걸릴 수 있습니다. !다음에 보내기 전에 ajax 요청을 중단 하시겠습니까? (jQuery)

보고서는 수정 한 경우, 매우 간단하게 아약스 요청 해고 필터의 무리, 모든 수정할 수 있습니다 : 우리의 훌륭한 사용자가 오 내가 원하는 대기 "상태 때 이제

var ax = $.ajax({ 
    type: "GET", 
    url: "/blah", 
    data: values, 
    success: function(data) { .. } 
}); 

을 문제가 온다 이것은 1 월이 아니라 2 월부터! " 그러나 1 월 이후로 많은 데이터가 요청되고 있습니다. 그래서, 사용자가 2 월 날짜 옵션을 전환하고 두 번째 요청을 보내는 자바 스크립트 콘솔을 볼 수 있습니다. 이제 우리는 두 가지가 있고 그것은 경주입니다!

/보고 그런 다음 /? _ 날짜 = 1월 (로드 중 ...)

/보고 /? _ 날짜 = 2월 (이봐, 나도 지금 여기있어!)

일반적으로 더 작은 하나는 더 빨리로드되지만 다른 하나는로드되어 이미 가지고있는 것을 덮어 씁니다. ㅎ :)

ax 변수를 선언 한 뒤에 배치 된 ax.abort()을 사용하려고했습니다. ed here하지만 제대로 작동하지 않는 것 같습니다.

이제 궁금한 점이 무엇입니까? 난 그냥 현재 요청을 죽이려고 (클라이언트 쪽, 나는 그것에 대해 서버 쪽에서 아무것도 할 수 없다는 것을 알고) 사용자가 몇 가지 옵션을 변경하자마자 나는 동시에 2 개 이상의 요청을 가지지 않습니다. . async: false 설정은 사용자를 잠그기 때문에 옵션이 아닙니다.

미리 도움을 주셔서 감사합니다.

답변

1

ajaxmanager 플러그인을 살펴보십시오.

+0

감사합니다. 매우 사용하기 쉽습니다. 이것을 시도해 보겠습니다. – Bartek

+0

이것은 훌륭했습니다. 참조에 대한 감사합니다 – Bartek

3

이전 요청을 중단하려고하면 좋은 해결책이 아니라고 생각합니다. 어쩌면 당신은 간단한 해결 방법을 사용해야합니다 - 자바 스크립트에서 각 아약스 요청 증가 카운터에 대해, 그리고 아약스 콜백에 전달합니다. 콜백이 발생하면 응답 카운터가 현재 카운터 값과 같은지 확인하십시오. 그렇지 않은 경우 응답을 무시하십시오. 오래된 클릭 이벤트로 해고되었습니다.

+0

흠, 나쁜 해결책이 아닙니다. 아주 간단하지만 호기심이 응용 프로그램에서 작동하는 방법. 내일 그것을 시험해야 할 것이다 – Bartek

+0

좋은 생각! 내 구현에 이것을 시도 할 것이다. –

관련 문제