ajax调用C#方法

ajax调用C#方法,c#,jquery,asp.net,ajax,C#,Jquery,Asp.net,Ajax,我想使用jqueryajax调用C#method,该方法不返回任何东西,而是直接修改aspx页面中的数据。我的呼叫工作正常,但我无法从该方法对UI进行任何更改 jQuery $(document).ready(function () { $('#<%=Button1.ClientID %>').click(function () { debugger; $.ajax({ type

我想使用jqueryajax调用C#method,该方法不返回任何东西,而是直接修改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>

注意:必须仅在函数中实现的更改,如果我删除javascript中的注释部分,则向我抛出错误警报消息的ajax调用应声明为静态

[WebMethod]
public static string ServerSideMethod()

您不能从内部更改
Label1.Text
服务器端方法,因为它是
静态的

服务器端代码不能在客户端更改任何内容

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

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

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

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

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

    $('#Label1').text('Hi');
}
这将出现在AJAX调用的成功回调中。大概是这样的:

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

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

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

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)
public string ServerSideMethod(){        
   //Label1.Text="Hi";
   return "Hi ajax call to C# method";
}
为什么要使用Label1.Text=“Hi”?这在WebMethod中是不可能的。

替换
alert(“E”)
使用
console.log(msg.d)
,您在控制台中得到了什么吗?如果我删除了已注释的部分,您的评论。。。。那么答案是正确的,因为ajax需要从控制器中获取一个对象,并且从那里返回一个字符串,这样会导致错误。