Javascript 从Web服务(asmx)页面引用asp.net页面上的字段

Javascript 从Web服务(asmx)页面引用asp.net页面上的字段,javascript,c#,asp.net,web-services,Javascript,C#,Asp.net,Web Services,我正在使用Web服务页面使文本框成为自动完成控件。为了做到这一点,我使用了一个web服务 我在web服务中的代码如下所示: public string[] ISGetCompletionList(string prefixText) { string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CLTDPL"].ConnectionString;

我正在使用Web服务页面使文本框成为自动完成控件。为了做到这一点,我使用了一个web服务

我在web服务中的代码如下所示:

    public string[] ISGetCompletionList(string prefixText)
    {
        string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CLTDPL"].ConnectionString;
        SqlConnection conn = new SqlConnection(connectionString);

        List<string> Payers = new List<string>();
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandText = "SELECT [PAYER_ID], [PAYER_TYPE] FROM [mos_Payer] WHERE " +
            "PAYER_TYPE like '%' + @SearchText + '%' ORDER BY PAYER_TYPE ASC";
            cmd.Parameters.AddWithValue("@SearchText", prefixText);
            cmd.Connection = conn;
            conn.Open();
            using (SqlDataReader sdr = cmd.ExecuteReader())
            {
                while (sdr.Read())
                {
                    Payers.Add(string.Format("{0}|{1}", sdr["PAYER_TYPE"], sdr["PAYER_ID"]));
                }
            }
            conn.Close();
        }
        return Payers.ToArray();
    }
    function SetAutoComplete() {
        $("#<%=txtPayer.ClientID %>").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: '<%=ResolveUrl("~/Autocomplete.asmx/ISGetCompletionList") %>',
                     data: "{ 'prefixText': '" + request.term + "'}",
                     dataType: "json",
                     type: "POST",
                     contentType: "application/json; charset=utf-8",
                     success: function (data) {
                         response($.map(data.d, function (item) {
                             return {
                                 label: item.split('|')[0],
                                 val: item.split('|')[1]
                             }
                         }))
                     },
                     error: function (response) {
                         alert(response.responseText);
                     },
                     failure: function (response) {
                         alert(response.responseText);
                     }
                 });
             },
            select: function (e, i) {
                $("#<%=hfPayer.ClientID %>").val(i.item.val);
             },
             minLength: 1
        });
   };
我想知道如何在我的aspx页面上引用该字段

发送所有信息的javascript如下所示:

    public string[] ISGetCompletionList(string prefixText)
    {
        string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CLTDPL"].ConnectionString;
        SqlConnection conn = new SqlConnection(connectionString);

        List<string> Payers = new List<string>();
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandText = "SELECT [PAYER_ID], [PAYER_TYPE] FROM [mos_Payer] WHERE " +
            "PAYER_TYPE like '%' + @SearchText + '%' ORDER BY PAYER_TYPE ASC";
            cmd.Parameters.AddWithValue("@SearchText", prefixText);
            cmd.Connection = conn;
            conn.Open();
            using (SqlDataReader sdr = cmd.ExecuteReader())
            {
                while (sdr.Read())
                {
                    Payers.Add(string.Format("{0}|{1}", sdr["PAYER_TYPE"], sdr["PAYER_ID"]));
                }
            }
            conn.Close();
        }
        return Payers.ToArray();
    }
    function SetAutoComplete() {
        $("#<%=txtPayer.ClientID %>").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: '<%=ResolveUrl("~/Autocomplete.asmx/ISGetCompletionList") %>',
                     data: "{ 'prefixText': '" + request.term + "'}",
                     dataType: "json",
                     type: "POST",
                     contentType: "application/json; charset=utf-8",
                     success: function (data) {
                         response($.map(data.d, function (item) {
                             return {
                                 label: item.split('|')[0],
                                 val: item.split('|')[1]
                             }
                         }))
                     },
                     error: function (response) {
                         alert(response.responseText);
                     },
                     failure: function (response) {
                         alert(response.responseText);
                     }
                 });
             },
            select: function (e, i) {
                $("#<%=hfPayer.ClientID %>").val(i.item.val);
             },
             minLength: 1
        });
   };

不记得是否可以执行此操作,但请尝试向方法中添加另一个参数

public string[] ISGetCompletionList(string prefixText, string payerDate)
然后在ajax调用中

data: "{ 'prefixText': '" + request.term + "', 'payerDate': '" + formDate + "' }", etc.
或者

在ajax调用中向prefixText添加信息,类似于webmethod组合数据的方式:

data: "{ 'prefixText': '" + request.term + "|" + formDate + "' }", etc

然后将其拆分成代码。

您是指MyForm.PayerDate?我建议在客户端读取SetAutoComplete javascript函数中的值,并将其作为“data”属性中的附加参数传递,也就是您在其中设置prefixText的参数?Javascript是我的薄弱环节,它是我实现自动完成的奇迹。该表单上还有一个名为txtDate.get的文本框,其值为:var payerdate=$.val;。然后将其传递给以下对象:数据:{'prefixText':'+request.term+','payerDate':payerDate}。我想是约会吧?然后使用字符串传输原始值,然后使用DateTime.TryParse将其发送到服务器端。为@payerdate使用命令参数,就像您对@SearchText所做的那样。我将var语句滑入函数SetAutoComplete{line下面的一行,得到了一个无效的JSON原语:payerdate错误。我将数据行稍微编辑为数据:{'prefixText':'+request.term+','payerdate':'+payerdate+}它是有效的,但在后端,当我在其中插入代码中断时,它的prefixText有一个值,payerDate没有。你知道我做错了什么吗?看到第一个方法有效了吗,所以我不必费心测试第二个。谢谢!