PageMethods返回未定义的结果?

时间:2009-08-24 19:15:01

标签: c# asp.net pagemethods

我对PageMethod的调用非常简单。当我在.cs文件中单步执行PageMethod时,该值看起来像预期的那样。但是,在客户端,我得到一个未定义的结果。有任何想法吗?这应该非常简单。

这是我的js :(在我的ASPX页面中EnablePageMethods="true"

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

5 个答案:

答案 0 :(得分: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"; 
        }

这就是它!

答案 1 :(得分:3)

你要传入一个将在Success / Exception上执行的回调函数。所以在这种情况下,它会是这样的

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

function onError(desc) {
}

function onSuccess(result) {
}

我会检查文档的确切用法。

答案 2 :(得分:1)

查看以下截屏视频。它解释了如何使用JQuery调用PageMethods:

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

答案 3 :(得分:0)

This是关于这个主题的伟大而具体的文章。

对我来说,以下代码正在运作。

我有一个异步处理excel文件的页面;在处理时,函数 EsperarFinDelCargue()轮询一个名为 CargueFinalizo()的 PageMethod 每秒钟查看处理是否已经结束。处理完成后,将进行重定向。

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

这是aspx中的PageMethod代码:

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

答案 4 :(得分:0)

Try This it will work fine

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