我无法找到一个方法来从一个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文件断点,因此代码值永远不会被通过。
这是我在堆栈溢出,如果对不起什么是错的格式化的第一篇文章。
你需要一个ScriptManager
控件添加到页面(或母版公司),并确保该EnablePageMethods
的ScriptManager
属性是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);
[WebMethod]
s解析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
});
一切应正常工作。
经过控制台(用F12)从@TylerRope劝和了错误编号401(未授权)。
随着我的资源,以this post's correct answer和解决错误。如果您知道任何副作用,如果你共享该解决方案可能会导致将不胜感激。
谢谢您的帮助!