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

时间:2012-02-14 20:04:32

标签: jquery asp.net ajax webforms

在Web表单中,我有以下jQuery设置来调用我的代码隐藏文件中的方法。

 <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中的字段,例如上面的方法,当调用服务器端脚本时,ui值为ui对于日期字段?

提前感谢任何建议。

1 个答案:

答案 0 :(得分:2)

这根本不可能,因为您无法从服务器端更新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;
        });
    });