调用c#方法的JQuery代码无效
我正在从JQuery调用一个C#函数,但它给出了一个错误 JQuery函数写在ascx文件中,要调用的C#函数写在该页面的代码中。我正在将用户控件加载到一个AJAX tab on tab change事件中 谷歌搜索,我发现我不能调用用用户控件编写的C函数。所以我在主机页(ASPX)中编写了一个函数,这个函数调用了我的用户控制函数 但是AJAX请求有点失败,我不知道在哪里。但有趣的是,我在error函数中保留了一个调试器,并检查了error对象 状态为200,状态为OK,readyState为4 ResponseText是页面的标记。这意味着页面被服务,但在C#函数中保持断点。它永远不会击中 我不知道发生了什么事。这也是我第一次从前端调用C#函数。我不知道引擎盖下发生了什么。请帮忙。代码如下: JQuery ASPX页面的代码隐藏功能调用c#方法的JQuery代码无效,c#,jquery,asp.net,ajax,ajax.net,C#,Jquery,Asp.net,Ajax,Ajax.net,我正在从JQuery调用一个C#函数,但它给出了一个错误 JQuery函数写在ascx文件中,要调用的C#函数写在该页面的代码中。我正在将用户控件加载到一个AJAX tab on tab change事件中 谷歌搜索,我发现我不能调用用用户控件编写的C函数。所以我在主机页(ASPX)中编写了一个函数,这个函数调用了我的用户控制函数 但是AJAX请求有点失败,我不知道在哪里。但有趣的是,我在error函数中保留了一个调试器,并检查了error对象 状态为200,状态为OK,readyState为4
[System.Web.Services.WebMethod]
public void CallUCMethodFromJQuery(string sAvailability)
{
MyNamespace.UserControls.ControlName m = new UserControls.ControlName();
m.EditAvailabilityValue(sAvailability);
}
然后是用户控件的代码
public void EditAvailabilityValue(string sAvailability)
{
}
对不起,没有提及。。。。JQuery位于用户控件中,因为click事件的源是用户控件中的li元素。另外,UserControl位于UserControls文件夹中,host page位于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页面codebhind中的jQuery方法中的callucmethod更改为static
,以便可以使用jQuery调用它:
[System.Web.Services.WebMethod]
public static void CallUCMethodFromJQuery(string sAvailability)
{
MyNamespace.UserControls.ControlName.EditAvailabilityValue(sAvailability);
}
对不起,没有提及。。。。JQuery位于用户控件中,因为click事件的源是用户控件中的li元素。另外,UserControl位于UserControls文件夹中,host page位于Pages文件夹中,这两个文件夹均位于根文件夹中。感谢一百万ekad,它的工作非常出色。但是,我没有将EditAvailabilityValue设置为静态,但是来自jQuery的CallUCMethodFromJQuery肯定需要是静态的,并且还需要内容类型。我在某个地方读到,如果您发送一个非JSON值,那么就不需要放置这个属性。任何能帮助我理解这个概念的解释。
[System.Web.Services.WebMethod]
public static void CallUCMethodFromJQuery(string sAvailability)
{
MyNamespace.UserControls.ControlName.EditAvailabilityValue(sAvailability);
}