2012-04-26 3 views
1

asp.net mvc3 응용 프로그램에서 작업 중입니다.값이 false 인 경우 아약스 호출을 중지하십시오 (아약스 호출 전)

나는이 JQuery와 기능이 기본적으로

function CheckSession() { 
     $.ajax({ 
      type: 'POST', 
      url: '@Url.Action("CheckSession", "Home")', 
      success: function (isAvailable) { 
       return isAvailable; 
      }, 
      complete: function (owner) { 

      }, 
      error: function (owner) { 
       alert('Error Getting session'); 
       return false; 
      } 

     }); 
    } 

무엇을이 세션을 수행하면 해당 작업이 true 또는 false를 반환합니다 HomeController에서 작업을 호출입니다 있습니다.

내가 원하는 것은 이것입니다. 응용 프로그램에서 모든 Ajax 호출을 수행하기 전에이 함수를 먼저 사용하고 싶습니다. true을 반환하면 호출을 진행하고 그렇지 않으면 아무 것도하지 않습니다.

모든 코드를 통해 이동

내가이이 모든 아약스 전에 호출 및 반환을 테스트하여 수행 할 수 있습니다 알고 모든 아약스 호출하기 전에 호출 할 필요없이이 할 수있는 방법이 있나요하지만, 나는 아약스 전화 톤있다.

$(ajax).beforeCall(function (event) { 
    if (CheckSession()){ 
     event.ProceedWithCall; 
    } 
    else { 
     //Stop the call; 
     return false; 
    } 
}); 
+0

멋진 프레젠테이션을 위해 보안의 보조 레이어 이외의 항목에 대해 자바 스크립트로 세션을 확인하지 마십시오. –

+0

@infensus 무엇을 의미합니까? 자바 스크립트에서 세션을 검사하는 함수를 호출하는 것이 안전하지 않습니까? – Youssef

+0

^그는 아마도 내 대답과 함께하려고했던 지점을 의미합니다. –

답변

3

당신은 ajaxSetup를 사용하고이 같은 beforeSend 기능을 설정할 수 있습니다

$.ajaxSetup({ 
    beforeSend: function(){ 
      return !CheckSession(); 
     } 
}); 

beforeSenddocs :

jQuery를 1.4에서 jqXHR을 (수정하는 데 사용할 수있는 사전 요청 콜백 함수를 .x, XMLHTTPRequest) 개체를 보내기 전에. 이것을 사용하여 사용자 정의 헤더 등을 설정합니다. jqXHR 및 설정 맵은 인수로 전달됩니다. 이것은 Ajax 이벤트입니다. * beforeSend 함수에서 false를 반환하면 요청이 취소됩니다.

ajaxSetupdocs :

설명 : 미래 Ajax 요청에 대한 설정 기본값.

+0

감사합니다. 내가 원하는 것을 exacltly 감사합니다. – Youssef

1

beforeSend (jqXHR, 설정)를 사용하여 콜백 :

내가 찾고있는 Ajax 호출이 같은

무언가를 이루어지기 전에 화재 이벤트 핸들러입니다

jqXHR (jQuery 1.4.x, XMLHTTPRequest) 객체를 보내기 전에이를 수정할 수있는 사전 요청 콜백 함수입니다. 이 을 사용하여 사용자 정의 헤더 등을 설정하십시오. jqXHR 및 설정 맵은 인수로 전달됩니다. 이것은 Ajax 이벤트입니다. beforeSend 함수에서 false를 반환하면 요청이 취소됩니다.

자세한 내용은 http://api.jquery.com/jQuery.ajax/을 참조하십시오.

+0

감사합니다. 그러나 이것은 모든 아약스 전화를 하나씩 거쳐야합니다. 내가 피하려고하는 것. – Youssef

+0

아닙니다. 당신은 $ .ajaxSetup()을 사용하여 beforeSend를 설정할 수 있습니다. http://api.jquery.com/jQuery.ajaxSetup/ – amaters

0

개인적으로 저는 클라이언트 쪽 자바 스크립트가 아닌 세션 확인 논리를 호출하는 ASP.NET 끝점을 개인적으로 만들 것입니다.

생각해보십시오 : 세션을 확인하기 위해 .NET 코드를 실행하는 AJAX 호출을 시작하고 부울을 반환하고 true 인 경우 다른 AJAX 호출을 시작합니다. AJAX 호출 (즉, AJAX 호출 2)을 실행하고 ASP.NET 종료점에서 AJAX 호출 1로 호출하는 모든 작업을 수행해야하는 이유는 무엇입니까?

당신은 tons of AJAX calls이 있다고 생각하면 상당한 이익을 얻을 수있는 이런 식으로 HTTP 요청 왕복을 저장할 것입니다.

그냥 내 두 센트. 그런데, 나는 위의 @ gdoron의 대답으로 갈 것이다.

+0

팁 주셔서 감사합니다. 하지만 내 문제는 이것입니다 :'CheckSession()'이 false를 반환하면 사용자를 다른 페이지로 리디렉션하고 싶습니다. 이것은 ajax 호출이므로 C# 코드에서 리디렉션하면 페이지가 내 페이지의 div 안에로드되고 완전히 리디렉션되지 않습니다. 브라우저를 다른 페이지로 완전히 리디렉션하는 유일한 방법은 자바 스크립트에서 리디렉션하는 것입니다. 그래서 내가 자바 스크립트에서 확인해야합니다. – Youssef