2010-07-27 4 views
0

У меня есть плагин jQuery - индикатор выполнения. Как вызвать метод на стороне сервера на успех? Код ниже:ASP.NET 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; 
      } 
     ); 
+0

Является ли это в WebForms или MVC? –

+0

Это проект WebForms – Tony

ответ

2

Как мы установили это в 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); 
} 

Я основываю это на my Hidden Features of ASP.NET answer here (что не является специфичным для jQuery). Однако для более подробной информации об использовании jQuery с WebMethods читайте Using jQuery to directly call ASP.NET AJAX page methods.

+0

awesome, спасибо! – Tony

0

Для 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 
Смежные вопросы