Pergunta

Eu tenho uma chamada muito simples para um Pagemethod. Quando eu passo pelo meu Pagemethod no meu arquivo .cs, o valor parece esperado. No entanto, no lado do cliente, recebo um resultado indefinido. Alguma ideia? Isso deve ser terrivelmente simples.

Aqui está meu js: (EnablePageMethods="true" na minha página ASPX)

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

E aqui está o meu C#:

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

Solução

Confira o seguinte screencast. Ele explica como chamar os métodos de Pagemeths usando o jQuery:

http://www.hightoncoding.com/articles/430_calling_page_methods_using_jquery_and_returning_json_result.aspx

Outras dicas

Aqui está a resposta sobre como chamar os métodos de pagemeths usando o ms ajax. Primeiro, verifique se você baixou a mais recente biblioteca Ajax no site do MS.

<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"; 
        }

É isso!

Você pode passar em uma função de retorno de chamada que seria executada no sucesso / exceção. Então, neste caso, seria algo assim

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

function onError(desc) {
}

function onSuccess(result) {
}

Eu verificaria a documentação para o uso exato.

este é um ótimo e concreto artigo sobre o assunto.

Para mim, o código a seguir está funcionando.

Eu tenho uma página que processa um arquivo do Excel de forma assíncrona; durante o processamento, a função EsperArfindelcargue () Pesquisas a Pagemethod chamado CargueFinizo () Cada segundo para ver se o processamento terminou. Quando o processamento termina, ocorre um redirecionamento.

ONCALLFINIZOCOCOLETETE é a função de retorno de chamada para a invocação Pagemethod, então existe onde você precisa usar o objeto resultante.

<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>

E aqui está o código Pagemethod no ASPX:

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

     <script type="text/javascript">
       function Generate()
       {              
           var result = PageMethods.GenerateOTP(your parameter, function (response)
           {
               alert(response);
           });
       }
</script>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top