2009-08-24 4 views
7

PageMethod에 대한 아주 간단한 호출이 있습니다. 내 .cs 파일에서 내 PageMethod를 단계별로 실행하면 값이 예상대로 나타납니다. 그러나 클라이언트 측에서 나는 정의되지 않은 결과를 얻습니다. 어떤 아이디어? 이것은 끔찍하게 간단해야합니다. (내 ASPX 페이지에서 EnablePageMethods="true") 여기정의되지 않은 결과를 반환하는 PageMethods?

function test() { 
    alert(PageMethods.MyMethod("Joe Blow")); 
} 

그리고 내 C#입니다 :

public partial class test : System.Web.UI.Page 
{ 
    [WebMethod] 
    public static string MyMethod(string name) 
    { 
     return "Hello " + name; 
    } 
} 
+0

EnablePageMethods이 페이지에 ScriptManager 컨트롤에 속성 : 영문에서 PageMethod 코드는 여기

<script type="text/javascript"> function EsperarFinDelCargue() { PageMethods.CargueFinalizo(OnCallFinalizoComplete); if($('#<%=this.hidCargueFinalizado.ClientID %>').val() == "SI") { document.location = "CargarPanelHCP.aspx"; } else { var t=setTimeout("EsperarFinDelCargue()",1000); } } function OnCallFinalizoComplete(result,contexto,CargueFinalizo) { $('#<%=this.hidCargueFinalizado.ClientID %>').val(result); } </script> 

그리고 무엇입니까? –

+0

예, 첫 번째 질문입니다. – Clay

+0

아니요, 두 번째 질문에, 이전에 읽었던 ... 지금까지 여기에 대한 답을 찾지 못했습니다. 감사. – Clay

답변

1

체크 아웃 다음 스크린 캐스트는

여기 내 JS입니다. 그것은 JQuery와 사용 PageMethods를 호출하는 방법을 설명합니다

http://www.highoncoding.com/Articles/430_Calling_Page_Methods_Using_JQuery_and_Returning_JSON_Result.aspx

+0

감사합니다. jQuery를 사용하여 JSON 호출을 수행하는 이유를 이해하고 싶습니다. 그러나 "Microsoft 방식"은 그렇지 않습니다. 시간 내 주셔서 감사합니다! – Clay

+0

Microsoft 라이브러리를 사용해보고 알려 드리겠습니다. 감사! – azamsharp

+0

훌륭한 사운드, 내가 한 것보다 운이 더 좋기를 바랍니다! :) – Clay

3

당신은 성공/예외에서 실행 될 콜백 함수에 전달했습니다. 따라서이 경우에는 다음과 같이됩니다.

PageMethods.MyMethod("Joe Blow", onSuccess, onError); 

function onError(desc) { 
} 

function onSuccess(result) { 
} 

정확한 사용법은 설명서를 확인합니다.

+0

나는 이것을했고 도움이되지 않는다. – Clay

7

다음은 MS Ajax를 사용하여 PageMethods를 호출하는 방법에 대한 대답입니다. 먼저 MS 웹 사이트에서 최신 Ajax 라이브러리를 다운로드했는지 확인하십시오.

<asp:ScriptManager ID="sm1" runat="server" EnablePageMethods="true"> 
    </asp:ScriptManager> 

    <input type="button" value="Greeting" onclick="greetings()" /> 

<script language="javascript" type="text/javascript"> 

    function greetings() { 

     PageMethods.GreetingFromPage(function(response) { 

      alert(response); 

     }); 

    } 


</script> 

    [WebMethod] 
     public static string GreetingFromPage() 
     { 
      return "greeting from page"; 
     } 

꽤 많이 있습니다!

+0

감사합니다. 여기의 구문은 내가 사용했던 것과 약간 다릅니다. – Clay

+0

+1 실제로 작동합니다. – Steffen

+0

함수에 매개 변수가 있다면? – bebosh

0

This은 주제에 대한 훌륭한 기사입니다.

나를 위해 다음 코드가 작동합니다.

Excel 파일을 비동기 적으로 처리하는 페이지가 있습니다. 처리하는 동안, 기능 EsperarFinDelCargue() 폴링은 PageMethodCargueFinalizo 호출() 각 처리가 종료되지 않았는지 초. 처리가 끝나면 리디렉션이 발생합니다.

OnCallFinalizoComplete은 PageMethod 호출에 대한 콜백 함수이므로 결과 개체를 사용해야 할 곳이 있습니다. 나는 그것을 가지고

[System.Web.Services.WebMethod] 
public static string CargueFinalizo() 
{ 
    //Whatever you need 
    return HttpContext.Current.Session["ResultadoCarguePanel"] != null ? "SI" : "NO"; 
} 
0
Try This it will work fine 

    <script type="text/javascript"> 
     function Generate() 
     {    
      var result = PageMethods.GenerateOTP(your parameter, function (response) 
      { 
       alert(response); 
      }); 
     } 
</script>