Pagemethods retornando resultado indefinido?
-
19-09-2019 - |
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;
}
}
Solução
Confira o seguinte screencast. Ele explica como chamar os métodos de Pagemeths usando o jQuery:
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>