从javascript调用代码

时间:2015-01-12 11:34:50

标签: javascript c# asp.net client-side onkeypress

我想要一个问题,

试试这个

<script type="text/javascript">
    function txtOnKeyPress(txt1) {
        if (txt1 != 'undefined') {
            var txt2 = document.getElemejavantById('<%=TxtArama.ClientID %>');
            txt2.value = txt1.value;
            <% Session["Sercert"] = TxtArama.Text;%> 
            //alert(txt2.value);
            var DTT =<%= GetSearcher("") %>;
            alert(DTT);

        }
    }
    <%--function CallCodeBehindMethod() {
        var txt2 = document.getElementById('<%=TxtArama.ClientID %>');
        alert(window.PageMethods.GetName(txt2));
        //this.GetName(txt2);
    }--%>
</script>

JS是客户端文本框按键事件

并且

事件背后的代码是

protected string GetSearcher(String KeyValue)
    {
        KeyValue = Session["Sercert"].ToString();
        String aa = "";
        if (KeyValue.Length > 0)
        {
            DataTable DT = new DataTable();
            DT = DbClass.GetDataTable("SELECT * FROM Products WHERE ProductName LIKE '%" + KeyValue + "%' LIMIT 10", "MySql");

            for (int i = 0; i < DT.Rows.Count; i++)
            {
                aa += "<a href=\"" +ReWriterPath(DT.Rows[i]["ProductId"].ToString(), DT.Rows[i]["ProductName"].ToString()) +"\">" +DT.Rows[i]["ProductName"] +"</a><br />";
            }


            RptSearcher.DataSource = DT;
            RptSearcher.DataBind();
            UPLSearcher.Update();
        }
        return aa;

    }

我尝试在转发器中填充数据

<asp:UpdatePanel runat="server" ID="UPLSearcher" UpdateMode="Conditional">
                                        <ContentTemplate>
                                            <asp:Literal runat="server" ID="LtrSearcher"></asp:Literal>
                                            <asp:Repeater runat="server" ID="RptSearcher">
                                                <ItemTemplate>

                                                    <a href="<%# ReWriterPath(Eval("ProductId").ToString(), Eval("ProductName").ToString()) %>"><%# Eval("ProductName") %></a><br />
                                                </ItemTemplate>
                                            </asp:Repeater>
                                        </ContentTemplate>
                                    </asp:UpdatePanel>

我想在代码隐藏方法的搜索按键事件中更新我的转发器。 并重新更新我的更新面板并列出结果。 但是js代码和方法只运行页面加载。并且密钥不在代码后面的代码上运行。 但是这个//alert(txt2.value);每次按键都会运行。

请帮忙。

1 个答案:

答案 0 :(得分:1)

您必须在后面的代码中创建[WebMethod]。你可以从javascript调用该方法。

 <script type="text/javascript">
    function txtOnKeyPress(txt1) {

        $.ajax({
            type: "POST",
            url: "/yourpage.aspx/GetSearcher",
            data: '', // put your data here that you want to pass in server method
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function (response) {
                alert(response.d);
            }
        });
    }
    function OnSuccess(response) {
        //write your code what you want to display on success
    }
</script>

创建方法背后的代码

 [WebMethod]
    [ScriptMethod()]
    public static string GetSearcher(String KeyValue)
    {  //Your code goes here  }