2010-07-27 7 views
0

J'ai jQuery plugin - barre de progression. Comment appeler la méthode côté serveur en cas de succès? Le code est ci-dessous:ASP.NET jQuery - comment appeler la méthode du serveur lorsque la méthode asynchrone est terminée?

(Tout fonctionne très bien)

$("#<%=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

Est-ce dans WebForms ou MVC? –

+0

C'est dans le projet WebForms – Tony

Répondre

2

Comme nous l'avons établi cela dans WebForms alors vous pouvez utiliser un rappel ASP.NET AJAX pour une méthode Web placée dans votre fichier ASPX.

d'abord, créez votre méthode côté serveur en C# (ou langage .NET de choix) et annoter avec les attributs ScriptMethod et WebMethod, comme ceci:

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

ensuite dans votre fichier ASPX vous devez ajouter un ScriptManager avec PageMethods activé:

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

appeler ensuite de votre événement de succès jQuery:

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

Je me base sur my Hidden Features of ASP.NET answer here (qui n'est pas spécifique à jQuery). Toutefois, pour plus de détails sur l'utilisation de jQuery avec WebMethods, lisez Using jQuery to directly call ASP.NET AJAX page methods.

+0

génial, merci! – Tony

0

Pour les fans VB là-bas, voici ma mise en œuvre de la réponse de Dan ci-dessus:

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