2010-07-27 73 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? – 2010-07-27 19:03:43

+0

它是在WebForms項目 – Tony 2010-07-27 19:04:29

回答

2

正如我們已經建立了這個在WebForms的,那麼你可以使用ASP.NET AJAX回調放置在你的aspx文件的Web方法。

首先,在C#(或選擇的.NET語言)服務器端方法,並與ScriptMethodWebMethod屬性對它進行註釋,像這樣:

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

然後在你的aspx文件,你需要添加與PageMethods一個ScriptManager啓用:

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

然後從你的jQuery的成功事件稱之爲:

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

我基於這個my Hidden Features of ASP.NET answer here(這不是jQuery特定的)。但是,有關在WebMethods中使用jQuery的更多詳細信息,請參閱Using jQuery to directly call ASP.NET AJAX page methods

+0

真棒,謝謝! – Tony 2010-07-27 20:17:43

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