我找不到将javascript文件(我从onclick事件的html文件中获取)中的值传递给aspx.cs文件的方法。
我尝试使用以下代码。每篇文章似乎都以这种方式显示,但是错误不断被调用,还尝试使用“类型”而不是“方法”。
.js文件:
//get 'name' variable here
$.ajax({
url: 'WebForm.aspx/Send',
dataType: "json",
method: 'post',
contentType: "application/json; charset=utf-8",
data: { name: name },
success: msgsuccess,
error: msgerror
});
WebForm.aspx.cs文件:
[WebMethod]
public static string Send(string name)
{//breakpoint here
//code
}
代码永远不会到达aspx.cs文件中的断点,因此代码值永远不会传递。
这是我在堆栈溢出中的第一篇文章,如果格式错误,抱歉。
答案 0 :(得分:1)
您需要向页面(或其母版页)添加ScriptManager
控件,并确保ScriptManager
的{{3}}属性为true
。
例如,当页面或其母版页面具有这样的ScriptManager
控件时:
<asp:ScriptManager runat="server">
...
</asp:ScriptManager>
然后添加EnablePageMethods
属性并将其设置为true:
<asp:ScriptManager runat="server" EnablePageMethods="true">
...
</asp:ScriptManager>
请注意,如果页面的母版页上已有ScriptManager
控件,则无法将其添加到页面中。
此外,您可以简化从JavaScript调用方法的过程。您可以简单地使用:
PageMethods.Send(name, msgsuccess, msgerror);
答案 1 :(得分:0)
[WebMethod]
的 parse JSON,因此您需要将请求数据作为字符串发送:
$.ajax({
url: 'WebForm.aspx/Send',
dataType: "json",
method: 'post',
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ name: name }), // use JSON.stringify here
success: msgsuccess,
error: msgerror
});
其他所有功能都应按预期运行。
答案 2 :(得分:0)
按照@TylerRope的建议检查控制台(使用F12),并得到错误号401(未授权)。
因此,我获得资源this post's correct answer并解决了该错误。如果您知道此解决方案可能引起的任何副作用,请与我们分享。
谢谢您的帮助!