2016-10-05 10 views
0

예를 들어 다음과 같은 코드를로드 패널에 표시 할 수 있습니다. 버튼을 클릭하고 Ajax 호출 만들기 :JavaScript : window.location.href가 변경되었는지 확인

$(document).ajaxComplete(function() { 
     if (window.LoadingPanel != null) { 
      window.LoadingPanel.Hide(); 
     } 
    }); 

그러나 어떤 경우에는 내가 결과에 따라 다른 페이지로 리디렉션 : 다음 코드 Ajax 호출 후

$(document).on("click", function (e) { 
     window.LoadingPanel.Show(); 
    }); 

하면 로딩 패널이 다시 사라 확인합니다 window.location.href을 설정하여 Ajax 호출을 차단하십시오. 이 경우 리디렉션이 성공할 때까지 ajaxComplete 함수가 너무 일찍 적재 패널을 숨기지 않도록해야합니다.

window.location.href가 변경되어 페이지가 리디렉션되는 경우 ajaxComplete 기능을 어떻게 확인할 수 있습니까?

+0

다음을 참조하십시오. 각 페이지는 자체 윈도우 인스턴스입니다. – charlietfl

+2

AJAX 호출의 결과를 기반으로 플래그를 설정하지 않는 이유는 무엇입니까? 사실이면 패널을 숨기고, 그렇지 않으면 패널을 숨 깁니다. –

답변

1

이 방법은이 문제를 해결하는 좋은 방법이 아니지만 지금 생각할 수있는 사항입니다.
1. 변수 호출 만들기 isHide = true;
2. 숨기기가 필요하지 않은 경우 jax 호출 Onsuccess 함수에서 isHide = false를 설정합니다. 당신의 ajaxComplete에서
3. 리디렉션 당신이 할 수없는 요구하고 어떤 브라우저에서 새로운 전체 페이지를로드 의미하는 경우

$(document).ajaxComplete(function(e) { 
    if (window.LoadingPanel != null && isHide) { 
     window.LoadingPanel.Hide(); 
    } 
});