Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用c#方法的JQuery代码无效_C#_Jquery_Asp.net_Ajax_Ajax.net - Fatal编程技术网

调用c#方法的JQuery代码无效

调用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

我正在从JQuery调用一个C#函数,但它给出了一个错误

JQuery函数写在ascx文件中,要调用的C#函数写在该页面的代码中。我正在将用户控件加载到一个AJAX tab on tab change事件中

谷歌搜索,我发现我不能调用用用户控件编写的C函数。所以我在主机页(ASPX)中编写了一个函数,这个函数调用了我的用户控制函数

但是AJAX请求有点失败,我不知道在哪里。但有趣的是,我在error函数中保留了一个调试器,并检查了error对象

状态为200,状态为OK,readyState为4

ResponseText是页面的标记。这意味着页面被服务,但在C#函数中保持断点。它永远不会击中

我不知道发生了什么事。这也是我第一次从前端调用C#函数。我不知道引擎盖下发生了什么。请帮忙。代码如下: JQuery

ASPX页面的代码隐藏功能

[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);
}