我正在从 JQuery 调用 C# 函数,但它给出了错误。
JQuery 函数写在 ascx 文件中,而要调用的 C# 函数写在该页面后面的代码中。我正在将用户控件加载到选项卡更改事件的 AJAX 选项卡中。
谷歌搜索,我知道我不能调用用用户控件编写的 C# 函数。所以我在主机页面(ASPX)中编写了一个函数,这个函数正在调用我的用户控制函数。
但是 AJAX 请求有些失败,我不知道在哪里。但有趣的是我在错误函数中保留了一个调试器,并检查了错误对象。
Status 是 200,Status 是 OK,readyState 是 4
并且 ResponseText 是页面的标记。这意味着页面已提供服务,但在 C# 函数中保留了断点。它永远不会命中。
我不知道发生了什么。这也是我第一次从前端调用 C# 函数。我不知道引擎盖下发生了什么。请帮忙。下面是代码:JQuery
$(function () {
$(".hint ul li").click(function () {
// remove classes from all
$(".hint ul li").removeClass("active");
// add class to the one we clicked
$(this).addClass("active");
//Ankit J, Implement logic to call jquery
var Availability = this.childNodes[0].innerText.trim();
debugger;
$.ajax({
type: "POST",
url: "../Pages/MyPage.aspx/CallUCMethodFromJQuery",
data: "{'sAvailability' : 'Availability'}",
dataType: "json",
success: fnsuccesscallback,
error: fnerrorcallback
});
});
});
function fnsuccesscallback(data) {
alert("success-->" + data.d);
}
function fnerrorcallback(result) {
debugger;
alert("error-->"+result);
}
ASPX 页面的代码隐藏函数
[System.Web.Services.WebMethod]
public void CallUCMethodFromJQuery(string sAvailability)
{
MyNamespace.UserControls.ControlName m = new UserControls.ControlName();
m.EditAvailabilityValue(sAvailability);
}
然后是UserControl的代码
public void EditAvailabilityValue(string sAvailability)
{
}
抱歉没有提及.... JQuery 在用户控件中,因为点击事件的来源是用户控件中的 li 元素。此外,UserControl 位于 UserControls 文件夹中,主机页面位于 Pages 文件夹中,这两个文件夹都位于根文件夹中。