ajax调用C#方法

时间:2014-01-27 13:33:55

标签: c# jquery asp.net ajax

我想使用jquery ajax调用C#方法,该方法不返回任何东西,而是直接修改aspx页面中的数据。我的调用工作正常,但我无法通过该方法对UI进行任何更改。

的jQuery

    $(document).ready(function () {

        $('#<%=Button1.ClientID %>').click(function () {
            debugger;
            $.ajax({
                type: "GET",
                url: "WebForm1.aspx/ServerSideMethod",
                data: "{}",
                    <%--contentType: "application/json; charset=utf-8",
                dataType: "json",--%>
                async: true,
                cache: false,
                success: function (msg) {
                    alert("E");

                    $('#myDiv').text(msg.d);
                },
                error: function (err) {
                    alert("Error");
                },
                failure: function (response) {
                    alert("ror1");
                }
            })
            return false;
        });
    });  
</script>

C#

[WebMethod]

    public string ServerSideMethod(){        
       Label1.Text="Hi";
       return "Hi ajax call to C# method";
    }

注意:必须在函数中实现的更改,如果我删除了javascript中的注释部分,那么ajax调用抛出错误警告消息

3 个答案:

答案 0 :(得分:0)

ServerSideMethod应声明为static

[WebMethod]
public static string ServerSideMethod()

并且您无法从Label1.Text内部更改ServerSideMethod,因为它是static

答案 1 :(得分:0)

服务器端代码无法更改客户端的任何内容。

通常,在非AJAX页面请求中,服务器端代码正在运行如下语句:

Label1.Text="Hi";

为了构建对客户端的响应。一旦发送了响应,它就不再受服务器端代码的控制。由于您是从已经呈现的页面发出AJAX请求,因此无法从服务器修改该页面(已在浏览器中)。

相反,您应该呈现对AJAX调用的响应,并使用JavaScript代码修改浏览器中的页面。

你没有显示标记,所以我只能猜测选择器是什么。但是,如果Label1呈现span并使用相同的id客户端,那么它可能如下所示:

$('#Label1').text('Hi');

这将是您的AJAX调用的成功回调。像这样:

success: function (msg) {
    alert("E");
    $('#myDiv').text(msg.d);

    $('#Label1').text('Hi');
}

答案 2 :(得分:0)

尝试在javascript代码中取消注释您的行,并在WebMethod中添加ScriptMethod属性

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)
public string ServerSideMethod(){        
   //Label1.Text="Hi";
   return "Hi ajax call to C# method";
}

为什么你有Label1.Text =“你好”?这在WebMethod中是不可能的。