0

详细信息:我将 HTML 代码加载到页面上,单击<a>链接后,我希望此单击事件由代码隐藏捕获和处理。

这是我作为客户端代码得到的:

$('a').click(function (e) {
        event.preventDefault();
        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) {
            }
        });
    });

HTML:

<a href="#" id="kontakt">Go to Kontakt</a>

问题是代码隐藏函数没有被调用,而只是#被添加到 url...

我非常感谢通过代码示例对我的代码进行更正,并可能对它们进行解释。

更新: 尝试使用 ASP 页面 webmethods。代码隐藏:

[WebMethod]
public string loadNewPage(string id)
{
    ltlContentCenter.Text = getPageCenter("kontakt");
    ltlContentSide.Text = getPageSide("kontakt");
    return "hello";
}

JS代码:

function loadMe() {
        PageMethods.loadNewPage("kontakt", CallSuccess, CallError);
    }
    function CallSuccess(res) {
        alert(res);
    }
    function CallError() {
        alert('Error');
    }

的HTML:

    <body>
        <form id="form1" runat="server">
        <asp:ScriptManager ID="scpt" runat="server" EnablePageMethods="true" />
        <div id="parent">
        <div id="mainmenu">
            <asp:LinkButton ID="LinkButton1" Text="FORSIDEN" CommandArgument="forsiden" OnCommand="loadPage_Command"
                runat="server" />
            <br />
            <asp:LinkButton ID="LinkButton2" Text="PRODUKTER" CommandArgument="produkter" OnCommand="loadPage_Command"
                runat="server" />
            <br />
            <asp:LinkButton ID="linkPages" Text="SUPPORT" CommandArgument="media" OnCommand="loadPage_Command"
                runat="server" />
            <br />
            <asp:LinkButton ID="LinkButton3" Text="KONTAKT" CommandArgument="kontakt" OnCommand="loadPage_Command"
                runat="server" />
            <br />
            <asp:LinkButton ID="LinkButton4" Text="OM ABiX" CommandArgument="omabix" OnCommand="loadPage_Command"
                runat="server" />
            <br />
        </div>
        <div id="logo">
        </div>


        <asp:Literal ID="ltlContentCenter" runat="server" />
        <asp:Literal ID="ltlContentSide" runat="server" />
        <a href="#" onclick="loadMe()">Click Me, please.</a>
        </div>
    </form>
</body>

浏览器控制台给了我错误"PageMethods is not defined"

4

2 回答 2

2

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

首先在您的 aspx 页面上添加一个脚本管理器

<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="scpt" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
</form>
</body>

然后转到您的 aspx.cs 页面并声明一个类似的函数

[System.Web.Services.WebMethod]
public static string ValidateUser(string emailId, string password)
{
    //Your logic code
    return "hello from server side";
}

然后从你的 javascript 调用 c# 方法,如

PageMethods.ValidateUser(email, password, CallSuccess_Login, CallFailed_Login);

并且还在你的 javascript 中创建 2 个回调函数 CallSuccess_Login 和 CallFailed_Login

希望能帮助到你

于 2013-09-04T08:44:21.637 回答
1

使用可以这样做:

$('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 调用的信息。

于 2013-09-04T08:41:16.317 回答