2012-10-29 5 views
0

.net1.1을 사용 중이고 브라우저 닫기 버튼을 클릭 할 때 Jquery를 사용하여 서버 측 메서드를 호출하려고합니다. 내 코드가 작동하지 않습니다. 아래 코드를 게시하고 있습니다. 아무도 날 안내 해줄거야? 코드에서 .Net1.1에서 Jquery를 사용하는 ServerSide 메서드 호출

<body MS_POSITIONING="GridLayout" onbeforeunload="javascript:return test()" > 

Ceci est une page cachée. Elle est utilisée pour la gestion du multi-fenétrage. 

</body> 


    function test() 
    { 
     debugger; 
     $(document).ready(function() { 
     $.ajax({ 
     type: "POST", 
     url: "HiddenPage.aspx/GetServerTime", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
      alert("success"); 
     }, 
     error: function(msg) { 
     alert("Error! Try again..."); 
     } 
      }); 


       return false;   
         }) 

     } 

==================

[WebMethod()] 


public DateTime GetServerTime() 
{ 


return DateTime.Now; 
} 

}

뒤에

컨트롤이 이동하지 않습니다 이 웹 메소드는 디버깅 할 수 없습니다. COntrol은 전체 블록 실행 후 '$ (document) .ready (function()'로 이동합니다. 오류 유형은 표시하지 않지만 경고는 표시되지 않습니다. 사용하는 경우 DateTime 대신 다른 반환 형식을 사용하면 여전히 작동하지 않습니다.

** onload에서이 메서드 테스트를 호출 할 때 오류 Conditon 경고가 표시됩니다. 그러나 broswer가 닫힐 때 호출해야합니다. 어떤 경우이든 웹 메서드로 연결되지 않습니다.

+2

없이의 WebMethod를 호출하는 JS 코드를 작성? 당신은 당신의 WebMethod에 들어가십니까? 그렇지 않은 경우 URL 문제가 발생했습니다. –

+0

URL에 어떤 문제가 있습니까? 코드 뒤에 웹 메소드를 작성했습니다. – F11

+0

WebMethod를 디버그에 입력하면 묻습니다. 그렇지 않습니까? –

답변

0

불행히도 브라우저 닫기를 구체적으로 확인할 수 없습니다. onbeforeunload을 (를) 사용하면 누군가가이 페이지에서도 리디렉션 될 때 작동합니다. DOM로드에 jQuery를 사용하여 이벤트 바인딩을 시도하십시오.

$(document).ready(function() { 
    $(window).unload(function(e) { 
     e.preventDefault(); 
     test(); 
    }); 
}); 

오류 정보를 제공하지 않았기 때문에 코드가 표시되지 않는 이유를 정확하게 말할 수 없습니다. 스크립트 당신은 당신의 웹 서비스에서 살펴볼 필요가

에서

호출 웹 방법, 당신은 당신이 암시, 당신은 스크립트에서 다른 사람이 바르게 말한다로 호출됩니다 그것을 말할 수 없습니다 필요 DateTime을 직렬화하십시오. laziest이 방법은 대신 문자열을 반환하는 것입니다.

[WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
public string GetServerTime() 
{ 
    return DateTime.Now.ToString(); 
} 
+0

컨트롤이 내 테스트 방법으로 이동하지만 작동하지 않습니다. – F11

0

$(document).ready(function() { ... }) 문서가로드 될 때 실행되도록하는 기능을 수행하지만 functoin 등록하지 않는다.
$(document).ready(function() { ... }) 문서의로드 이벤트에 대한 함수를 등록하십시오. onbeforeunload 이벤트에서이 함수를 등록하면이 함수는 실행되지 않습니다. onbeforeunload 이벤트에 함수를 등록하면 문서가 이미로드되어 언로드되고 있기 때문입니다. 당신은 onbeforeunload에서 메서드를 호출 할 경우
, 그냥 디버그에 무슨 일 $(document).ready

function test() 
{ 
    // $(document).ready(function() { //delete this   
    $.ajax({ 
    type: "POST", 
    url: "HiddenPage.aspx/GetServerTime", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { alert("success"); }, 
    error: function(msg) { alert("Error! Try again..."); } 
    }); 
    return false; 
} 
+0

Jerry 작동하지 않습니다. – F11