2010-07-27 116 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 
相关问题