C# 如何使客户端单击事件处理程序来请求服务器端方法

C# 如何使客户端单击事件处理程序来请求服务器端方法,c#,jquery,asp.net,ajax,event-handling,C#,Jquery,Asp.net,Ajax,Event Handling,详细信息:我将HTML代码加载到页面上,然后单击 浏览器控制台显示错误“未定义页面方法”使用时可以执行以下操作: $('a').click(function () { var data = { userName: $(this).attr("id") }; var dataVal = JSON.stringify(data); $.ajax({ type: "POST", url: "Defau

详细信息:我将HTML代码加载到页面上,然后单击

浏览器控制台显示错误
“未定义页面方法”

使用时可以执行以下操作:

$('a').click(function () {

        var data = { userName: $(this).attr("id") };
        var dataVal = JSON.stringify(data);

        $.ajax({
            type: "POST",
            url: "Default.aspx/loadNewPage",
            contentType: "application/json; charset=utf-8",
            data: dataVal,
            dataType: "json",
            success: function (id) {
                alert("loaded");
            }
        });
    });

[WebMethod]
public static void loadNewPage(int id)
{
  // do the loading of the new HTML, etc.  
}
您可以了解有关Jquery AJAX调用的更多信息。

用户可以这样做:

$('a').click(function () {

        var data = { userName: $(this).attr("id") };
        var dataVal = JSON.stringify(data);

        $.ajax({
            type: "POST",
            url: "Default.aspx/loadNewPage",
            contentType: "application/json; charset=utf-8",
            data: dataVal,
            dataType: "json",
            success: function (id) {
                alert("loaded");
            }
        });
    });

[WebMethod]
public static void loadNewPage(int id)
{
  // do the loading of the new HTML, etc.  
}

您可以了解有关Jquery AJAX调用的更多信息。

好的。

不是Jquery方式,而是使用客户端脚本访问服务器端的更多c方式。.尝试使用

首先在aspx页面上添加脚本管理器

<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="scpt" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
</form>
</body>
然后从javascript调用c#方法,如

PageMethods.ValidateUser(email, password, CallSuccess_Login, CallFailed_Login);
并且在URJavaScript中创建两个回调函数CallSuccess\u Login和CallFailed\u Login


希望对您有所帮助。

好的。.不是jquery方式,而是更多的c方式来使用客户端脚本访问服务器端。.尝试使用

首先在aspx页面上添加脚本管理器

<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="scpt" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
</form>
</body>
然后从javascript调用c#方法,如

PageMethods.ValidateUser(email, password, CallSuccess_Login, CallFailed_Login);
并且在URJavaScript中创建两个回调函数CallSuccess\u Login和CallFailed\u Login


希望它能帮助

返回false
以防止
标记执行其默认行为
返回false
阻止
标记执行其默认行为这是我的HTML:
并且我添加了
$('a')。单击(函数(e){e.preventDefault;
,这样它不仅会打开
,而且还会打开。如果我执行
href,你有什么想法吗?(因为函数显然没有做它应该做的事情)=“javascript::void(0)”
该函数不再工作。@Syspect-我无法理解您在上面这行中的意思。
标记的
href
带有值
这意味着当我单击它时,它要做的唯一事情就是添加符号”#“添加到url,而不是执行jQuery函数。这就是为什么我添加到函数
event.preventDefault()
,所以它不这样做,而是执行函数,但它仍然执行默认的
功能。那么你知道为什么会这样吗?@Syspect-event.preventDefault()用于防止页面在单击标记时发回。href将出现在您的url中,每当您单击标记时,您可以将“#”替换为“kontakt”。如果我将“#”替换为“kontakt”,则它会将我重定向到页面“kontakt”项目中没有这样的页面。但这并不重要。重要的是AJAX函数仍然没有执行。这是我的HTML:
,我添加了
$('a')。单击(函数(e){e.preventDefault;
,这样它就不会只打开
,而是仍然可以。你知道吗?(因为函数显然没有做它应该做的事情)如果我这样做
href=“javascript::void(0)”
该函数不再工作。@Syspect-我无法理解您在上行中的意思。
标记的
href
带有值
,这意味着当我单击它时,它唯一要做的就是添加符号“#”这就是为什么我添加了函数
event.preventDefault()
,所以它没有这样做,而是执行函数,但它仍然执行默认的
功能。那么你知道为什么会这样吗?@Syspect-event.preventDefault()用于防止页面在单击标记时发回。href将出现在您的url中,每当您单击标记时,您可以将“#”替换为“kontakt”。如果我将“#”替换为“kontakt”,则它会将我重定向到页面“kontakt”项目中没有这样的页面。但这并不重要。重要的是AJAX函数仍然没有执行。@iBlue-嘿,我是这样做的。但是标记的href带有值#,这意味着当我单击它时,它唯一要做的就是添加符号“#”到url,而不是执行代码隐藏功能。有什么建议吗?你可以在服务器端代码中放一个断点,检查它是否命中。只是检查调用是否正确working@iBlue-不,调用没有发生。链接似乎是空白的。我加载页面,然后即使单击-我也不会在调试模式下使用该函数.能否请您更新您尝试的完整代码数据,并检查浏览器中是否有任何错误console@iBlue-我更新了它。:)顺便说一句,我对AJAX函数也有同样的问题。但是现在让我们把重点放在ASP PageMethods方法上。@iBlue-嘿,我是这样做的。但是标记的href带有值#,这意味着当我单击它时,它唯一要做的就是添加符号“#”到url,而不是执行代码隐藏功能。有什么建议吗?你可以在服务器端代码中放一个断点,检查它是否命中。只是检查调用是否正确working@iBlue-不,调用没有发生。链接似乎是空白的。我加载页面,然后即使单击-我也不会在调试模式下使用该函数.能否请您更新您尝试的完整代码数据,并检查浏览器中是否有任何错误console@iBlue-我更新了它。:)顺便说一句,我对AJAX函数也有同样的问题。但是现在让我们重点关注ASP PageMethods方法。
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="scpt" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
</form>
</body>
[System.Web.Services.WebMethod]
public static string ValidateUser(string emailId, string password)
{
    //Your logic code
    return "hello from server side";
}
PageMethods.ValidateUser(email, password, CallSuccess_Login, CallFailed_Login);