asp.net webservice jquery 文本框自动完成

Posted

技术标签:

【中文标题】asp.net webservice jquery 文本框自动完成【英文标题】:asp.net webservice jquery textbox autocomplete 【发布时间】:2017-08-26 20:57:56 【问题描述】:

我正在尝试实现 jquery - 文本框自动完成。为此设置一个 Web 服务。

    [WebMethod]


    public List<Condition> GetCondition(string term)
    


        List<Condition> listCondition = new List<Condition>();

        string cs = ConfigurationManager.ConnectionStrings["db5"].ConnectionString;
        using (SqlConnection con = new SqlConnection(cs))
        
            SqlCommand cmd = new SqlCommand("spSelCondition", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter()
            
                ParameterName = "@term",
                Value = term
            );
            con.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            
                listCondition.Add(new Condition  ConditionID = rdr["ConditionID"].ToString(), ConditionName = rdr["ConditionName"].ToString() );
            
            return listCondition;
        
    

    public class Condition
    
        public string ConditionName  get; set; 
        public string ConditionID  get; set; 
    

WebService 工作得非常好。要使用我编写的 jquery 自动完成此 javascript 填充文本框。

<script type="text/javascript">
            $(document).ready(function () 

                $('#txtCondition').autocomplete(
                    source: function (request, response) 
                        $.ajax(
                            url: 'ibs_ws.asmx/GetCondition',
                            method: 'post',
                            contentType: 'application/json;charset=utf-8',
                            data: JSON.stringify( term: request.term ),
                            dataType: 'json',
                            success: function (data) 
                                response(data.d);


                            ,
                            error: function (err) 
                                alert(err);
                            
                        );
                    

            );
        )</script>

当我访问 web 服务时,它以 @term 作为参数并以 xml 格式返回带有 ConditionID 和 ConditionName 的结果。但是在网络表单上,当我在文本框中输入任何内容时,它会以 [object object] 发出警报。

可能是什么问题。

-- 感谢和问候

【问题讨论】:

【参考方案1】:

也许它会帮助你。试试这个

我认为您需要使用 $.map(data.d, function (value, key) )。这是需要更新成功代码的示例,如下所示,然后您可以在对象中获取值。

success: function (data) 
                        response($.map(data.d, function (value, key) 
                            return 
                                ConID: value.ConditionID,
                                ConNAme: value.ConditionName,
                            
                        ))
                    ,

正如您所说,您的服务返回条件 ID 和名称,所以我使用了这些变量,您可以完全匹配它返回的内容。

【讨论】:

以上是关于asp.net webservice jquery 文本框自动完成的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery 从 asp.net webservice 解析简单的 xml

在 asp.net webservices 中使用 jQuery AJAX 总是出错:而不是成功:

ASP.net jQuery调用webservice返回json数据的一些问题

如何在 c# ASP.Net 中使用有效的 JSON 输出创建 JSON WebService 并使用 JQuery/Ajax 进行查询

无法使用 AFNetworking 将 iOS 连接到 asp.net webservices

ASP.net JSON Webservice 响应类型的问题