ajax调用C#方法
我想使用jqueryajax调用C#method,该方法不返回任何东西,而是直接修改aspx页面中的数据。我的呼叫工作正常,但我无法从该方法对UI进行任何更改 jQueryajax调用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
$(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需要从控制器中获取一个对象,并且从那里返回一个字符串,这样会导致错误。