c# - 调用 c# 方法的 JQuery 代码不起作用

标签 c# jquery asp.net ajax ajax.net

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

JQuery函数写在ascx文件中,要调用的C#函数写在该页面的代码后面。我正在将用户控件加载到选项卡更改事件的 AJAX 选项卡中。

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

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

Status is 200, Status is OK, readyState is 4

ResponseText 是页面的标记。这意味着页面已提供,但在 C# 函数中保留了断点。它永远不会命中。

我不知道发生了什么。这也是我第一次从前端调用 C# 函数。我对引擎盖下发生的事情没有详细的了解。请帮忙。下面是代码: 查询

$(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);
}

关于c# - 调用 c# 方法的 JQuery 代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21206571/

相关文章:

javascript - 移动站点检测服务器端与客户端

c# - 3D 图形(x、y、z)

c# - 使用 X509Certificate2 和私钥签署文件

php - WordPress 菜单帖子特色图片

javascript - 如何克隆实际的 iFrame 内容,而不仅仅是 iFrame 标签内容?

javascript - 无法使用 javascript 和 jquery 创建下拉框

asp.net - 菜单在页面加载期间展开

c# - 过滤 radcombobox 时始终显示第一项

c# - Excel加载项密码文本框

c# - 从 HttpModule 访问 Request.Form 中断 AutoEventWireUp