我经历了无数的帖子,无法弄清楚我在做什么错。我有一个asp.net网站,后面带有C#代码。在其中,我需要.aspx页上的javascript函数来触发aspx.cs页上的方法。我写了以下代码:
。aspx页(我的ScriptManager ::
</head>
<body id="bodycontainer">
<asp:ScriptManager ID="ScriptManager2" runat="server" EnablePartialRendering="false" EnablePageMethods="true"/>
。aspx页面上使用ajax的Javascript函数:
function ValidateForm() {
$.ajax({
type: "POST",
url: "default.aspx/Save",
data: {},
contentType: "application/json; charset=utf=8",
// dataType: "json", // NOT NEEDED IF NO RETURN VALUE
async: true, // OPTIONAL
success: function (msg) {
alert("success");
},
error: function (msg) {
alert("failed");
}
});
}
aspx.cs页面(代码隐藏页面):
[WebMethod]
public static void Save()
{
// throw new DivideByZeroException(); // USED THIS TO VERIFY IF WEBMETHOD IS HIT.
_default obj = new _default();
obj.Show("Save Method Works"); // THIS IS A POPUP MESSAGE BOX
obj.btnSave_Click(); // THIS IS THE SAVE METHOD ON THIS PAGE THAT WE WANT TO RUN
}
public void btnSave_Click()
{
// METHODS CODE HERE
}
ValidateForm函数以“成功”响应,但是,它似乎甚至没有触发“代码隐藏”页面上的WebMethod。如果我使用IE在控制台网络选项卡上,我可以看到POST请求。但是,在方法背后的代码上,它永远不会在调试中触发断点(不确定是否应该根据某些帖子)。在某一时刻,我插入了一行以引发DivideByZero异常,但是它从未引发过该异常。
因此,总而言之,我得到了确认,他通过F12控制台网络选项卡中的成功消息和POST消息对WEBMETHOD进行了Java脚本调用。但是,似乎WEBMETHOD从未触发过。任何帮助,将不胜感激!
您可以尝试更改
url: "default.aspx/Save",
for
url: "Save",