我正在从JQuery调用一个C#函数,但它给出了错误。
JQuery函数写在ascx文件中,要调用的C#函数写在该页面的代码后面。我正在将用户控件加载到AJAX选项卡上的选项卡更改事件中。
在谷歌上搜索,我发现我不能调用在用户控件中编写的C#函数。所以我在主页(ASPX)中写了一个函数,这个函数调用了我的用户控制函数。
但是AJAX请求有些失败,我不知道在哪里。但有趣的是,我在错误函数中保留了一个调试器,并检查了错误对象。
状态为200,状态为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文件夹中,并且这两个文件夹都位于根文件夹中。
将contentType: "application/json; charset=utf-8"
属性添加到您的ajax调用:
$.ajax({
type: "POST",
url: "../Pages/MyPage.aspx/CallUCMethodFromJQuery",
data: "{'sAvailability' : 'Availability'}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: fnsuccesscallback,
error: fnerrorcallback
});
然后将用户控件中的EditAvailabilityValue
方法更改为静态:
public static void EditAvailabilityValue(string sAvailability)
{
}
并将aspx页面代码后面的CallUCMethodFromJQuery
方法更改为static
,以便使用jQuery:调用
[System.Web.Services.WebMethod]
public static void CallUCMethodFromJQuery(string sAvailability)
{
MyNamespace.UserControls.ControlName.EditAvailabilityValue(sAvailability);
}