如何从使用jQuery的asp.net代码中调用非静态方法

问题描述:

在Web表单中,我有以下jQuery安装程序在我的代码隐藏文件中调用方法。如何从使用jQuery的asp.net代码中调用非静态方法

<script src="js/jquery-1.7.js" type="text/javascript"></script> 

    <script type="text/javascript"> 
     $(function() { 
      $("#newBtn").click(function() { 
       $.ajax({ 
        type: "POST", 
        url: "AJAXCaller.aspx/GetTimer", 
        data: "{}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        async: true, 
        cache: false 

       }); 
       return false; 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <a href="#" class="link1" runat="server">Click here</a><br /><br /> 
    <asp:LinkButton ID="newBtn" runat="server" Text="ASP Link" /> 
    <asp:Label ID="time_lbl" runat="server" /> 
    </div> 
    </form> 
</body> 

我后面的代码中有以下几点:

[WebMethod] 
     public void GetTimer() 
     { 
      time_lbl.Text = DateTime.Now.ToString(); 
     } 

我意识到这一点目前并没有在当前的语法工作。

我已经能够访问该方法,如果我将它设置为静态但我不想只返回一个字符串或单个值。我想访问一个方法,该方法依次访问Web服务以返回一组数据。

我想知道是否有可能执行这样的事情,我可以调用一个方法,并让它更新UI中的一个字段,比如上面的方法,当调用服务器端脚本时,日期字段的值?

在此先感谢您的任何建议。

+0

您可以从一个WebMethod返回的值更新一个Asp.Net HiddenField,然后你可以从任何其他控制访问它。 – 2012-02-14 20:21:12

这是不可能的,因为你不能从服务器端更新UI上的任何字段。

取而代之的是在aspx页面中使用WebMethod而不是使用Asp.Net webservices来编写可以使用ajax调用的web方法。

ajax方法有一个成功回调,您可以获取服务响应,然后通过使用适当的选择器访问它来更新UI字段。

E.g

$(function() { 
     $("#newBtn").click(function() { 
      $.ajax({ 
       type: "POST", 
       url: "AJAXCaller.asmx/GetTimer", 
       data: "{}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       async: true, 
       cache: false, 
       success: function(data){ 
        $("#ClientIdOftime_lbl").text(data); 
       } 

      }); 
      return false; 
     }); 
    }); 
+0

@ShankarSngoli谢谢。但是,如果我想更新更多的领域?你提到每个我的示例的ui字段,但是如果我需要引用一个方法来返回将绑定到中继器,网格等的对象的数据集合呢? – rlcrews 2012-02-14 20:15:56

+0

您可以从服务器返回任何数据,但不能将其用作转发器的数据源。在客户端没有中继器,这是所有的标志。 – ShankarSangoli 2012-02-14 20:18:07

+0

在服务器上调用的用于处理UI的数据绑定和更新的方法中是不可能的?我想完成的是调用方法让它执行任务,然后允许方法绑定和更新控件(通过updatepanel)。本质上有一个Ajax事件调用回发? – rlcrews 2012-02-14 20:25:39