ASP.NET jQuery - как вызвать метод сервера, когда асинхронный метод завершен? - PullRequest
0 голосов
/ 27 июля 2010

У меня есть плагин jQuery - индикатор выполнения. Как вызвать метод на стороне сервера в случае успеха? Код ниже:

(все отлично работает)

 $("#<%=this.btnGetData.ClientID%>").click(
            function () {
                intervalID = setInterval(updateProgress, 100); 

                $.ajax({
                    type: "POST",
                    url: "ProgressBar.aspx/ExecuteImport",
                    data: "{}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    async: true,
                    success: function (msg)
                    {
                        //HERE should be invoke
                    }
                });

                return false;
            }
        );

Ответы [ 2 ]

2 голосов
/ 27 июля 2010

Поскольку мы установили это в WebForms, вы можете использовать обратный вызов ASP.NET AJAX для веб-метода, размещенного в вашем aspx-файле.

Сначала создайте свой метод на стороне сервера в C # (или на выбранном языке .NET) и аннотируйте его атрибутами ScriptMethod и WebMethod , например:

[System.Web.Services.WebMethod()] 
[System.Web.Script.Services.ScriptMethod()] 
public static void MyServerMethod(string myArgument)
{
        // Do something
}

Затем в вашем aspx-файле вам нужно добавить ScriptManager с включенными PageMethods:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />

Затем вызовите его из вашего успешного события jQuery:

success: function (msg)
{
     PageMethods.MyServerMethod(msg);
}

Я основываю это на мой ответ «Скрытые возможности ASP.NET» здесь (который не специфичен для jQuery). Однако для получения более подробной информации об использовании jQuery с WebMethods читайте Использование jQuery для прямого вызова методов страницы ASP.NET AJAX .

0 голосов
/ 02 апреля 2013

Для фанатов VB, вот моя реализация ответа Дэна выше:

<script type="text/javascript" >

    function EmailManagers_Click() {
        PageMethods.EmailManagers("hello");
        return false;
    }
</script>



  <System.Web.Services.WebMethod()> _
    <System.Web.Script.Services.ScriptMethod()> _
    Public Shared Sub EmailManagers(myArgument As String)
        Dim x = myArgument
    End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...