PageMethods возвращает неопределенный результат? - PullRequest
7 голосов
/ 24 августа 2009

У меня очень простой вызов PageMethod. Когда я шагаю по моему PageMethod в моем файле .cs, значение выглядит как положено. Однако на стороне клиента я получаю неопределенный результат. Есть идеи? Это должно быть ужасно просто.

Вот мой js: (EnablePageMethods="true" на моей странице ASPX)

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 ]

7 голосов
/ 25 августа 2009

Вот ответ о том, как вызывать PageMethods с помощью MS Ajax. Сначала убедитесь, что вы загрузили последнюю версию библиотеки Ajax с веб-сайта 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"; 
        }

Вот и все!

3 голосов
/ 24 августа 2009

Вы должны передать функцию обратного вызова, которая будет выполняться в случае успеха / исключения. Так что в этом случае это будет что-то вроде

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

function onError(desc) {
}

function onSuccess(result) {
}

Я бы проверил документацию для точного использования.

1 голос
/ 24 августа 2009

Проверьте следующую скринкаст. Он объясняет, как вызывать методы PageMethods с помощью JQuery:

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

0 голосов
/ 20 декабря 2013
Try This it will work fine

     <script type="text/javascript">
       function Generate()
       {              
           var result = PageMethods.GenerateOTP(your parameter, function (response)
           {
               alert(response);
           });
       }
</script>
0 голосов
/ 28 марта 2012

Это замечательная и конкретная статья на эту тему.

Для меня работает следующий код.

У меня есть страница, которая асинхронно обрабатывает файл Excel; во время обработки функция EsperarFinDelCargue () опрашивает PageMethod , называемый CargueFinalizo () каждую секунду, чтобы увидеть, если обработка закончена. По окончании обработки происходит перенаправление.

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>

А вот код PageMethod в aspx:

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