AJAX表明WEBMMETHOD是成功的,但它从未在代码背后实际触发过WEBMETHOD



我已经浏览了无数的帖子,不知道自己做错了什么。我有一个带有C#代码的asp.net网站。在它中,我需要.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。如果我使用I.E.控制台网络选项卡,我可以看到POST请求。然而,在代码隐藏方法上,它从未在调试中触发断点(根据一些帖子,不确定是否应该触发断点(。有一次,我插入了一行抛出DivideByZero异常,但它从未引发该异常。

因此,总的来说,我得到了确认,通过F12控制台"网络"选项卡中的成功消息和POST消息,对WEBMETHOD的Javascript调用起到了作用。然而,WEBMMETHOD似乎从未启动过。任何帮助都将不胜感激!

您可以尝试测试错误,而不是抛出异常

Response.Clear();
Response.StatusCode = 500;
Response.End;

不确定我做了什么,但我认为添加"UseHttpGet=false"使它最终能够执行Web方法。

[WebMethod(EnableSession = true)]
[System.Web.Script.Services.ScriptMethod(UseHttpGet = false)]
public static void Save()
{
//    throw new DivideByZeroException(); // USED THIS TO VERIFY IF WEBMETHOD IS HIT.
_default obj = new _default();  // SINCE THIS METHOD IS STATIC, WE HAVE TO INSTANTIATE AND INSTANCE OF THE DEFAULT PAGE CLASS TO ACCESS METHODS ON THIS PAGE
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
}

function ValidateForm() {
var text = "This is a Test";
$.ajax({
type: "POST",
contentType: "application/json; charset=utf=8",
data: "{}",
url: "default.aspx/Save",
dataType: "json",
success: function (msg) {
alert("success");
},
error: function (XMLHttpRequest, textStatus, errorThrown){
alert("status: " + textStatus);
alert("Error: " + XMLHttpRequest.responseText);
}
});
}

最新更新