2009-08-24 8 views
7

PageMethod için çok basit bir aramam var. PageMethod sayfamda .cs dosyasına adım attığımda, değer beklendiği gibi görünüyor. Ancak, müşteri tarafında tanımlanmamış bir sonuç alıyorum. Herhangi bir fikir? Bu korkunç derecede basit olmalı. (Benim ASPX sayfasında EnablePageMethods="true") buradaPageMethods tanımlanmamış sonucu döndürüyor musunuz?

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

Ve C#:

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

EnablePageMethods sayfanıza ScriptManager denetimi olduğunu öznitelik: aspx içinde PageMethod kodu burada

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

Ve nedir? –

+0

Evet, ilk sorunuza. – Clay

+0

Hayır, ikinci soruna, bunu daha önce okuduğumu okudum ... şimdiye kadar bu konuya bir cevap bulamadı. Teşekkürler. – Clay

cevap

1

Kontrol dışarı aşağıdaki screencast

İşte benim js olduğunu. Bu JQuery kullanarak PageMethods çağırmak açıklar:

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

+0

Teşekkürler, bu işe yaradı. JQuery'nin bir JSON araması yapmak için neden kullanıldığını, ancak "Microsoft yönteminin" neden kullanılmadığını anlamak isterim. Zaman ayırdığın için teşekkürler! – Clay

+0

Microsoft kütüphanesi ile dener ve size bildiririm. Teşekkürler! – azamsharp

+0

Harika görünüyor, umarım benden daha iyi şansınız olur! :) – Clay

3

Sen Başarı/İstisna üzerinde yürütülecek olan bir geri arama işlevi geçmek ettik. Bu durumda, bu, tam kullanım için belgelerini kontrol ederdim.

+0

Bunu yaptım ve yardımcı olmadı. – Clay

7

MS Ajax kullanarak PageMethods'ı nasıl çağıracağınıza dair yanıt İşte. Öncelikle en son Ajax kütüphanesini MS web sitesinden indirdiğinizden emin olun.

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

Bu oldukça fazla! Bu konuyla ilgili çok iyi ve somut bir yazı olan

+0

Teşekkürler, buradaki sözdizimi kullandığımdan biraz farklı, ben bunu bir atış yapacağım. – Clay

+0

+1 Bu gerçekten çalışıyor. – Steffen

+0

İşlevde parametreler varsa ne olur? – bebosh

0

This.

Benim için aşağıdaki kod çalışıyor.

Eşzamansız olarak bir excel dosyasını işleyen bir sayfam var; işlenirken, işlevi EsperarFinDelCargue() anketler bir PageMethodCargueFinalizo denilen() her işlem bittikten olmadığını görmek için ikinci. İşleme bittiğinde, bir yönlendirme gerçekleşir.

OnCallFinalizoComplete, PageMethod çağırma için geri arama işlevidir, bu nedenle, sonuçta oluşan nesneyi kullanmanız gereken yer vardır. Anladığım kadarıyla

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