在 Asp.net Web 表单中向 ajax 自动完成功能添加两个值

Posted

技术标签:

【中文标题】在 Asp.net Web 表单中向 ajax 自动完成功能添加两个值【英文标题】:Adding two values to ajax autocomplete function in Asp.net web forms 【发布时间】:2020-02-29 05:06:02 【问题描述】:

我有搜索文本框,我想在其中实现自动完成检查。当您键入一个字母时,自动完成需要为您提供该字母的所有名称。 我找到了教程,但我的问题是我想实现两个单选按钮,如果选中第一个,它将只为您提供客户建议,如果选中第二个,它将只为您提供公司建议。

我在 Web 服务 .asmx 中使用了这段代码

[WebMethod]
public class Autocomplete : System.Web.Services.WebService

    [WebMethod]

    public List<string> GetClientNames(string searchTerm,string rbtnValue)
    
        List<string> clientNames = new List<string>();
        string connStr = ConfigurationManager.ConnectionStrings["RheosConnString"].ConnectionString;
        using (SqlConnection conn = new SqlConnection(connStr))
        
            if (rbtnValue == "radio0")
            
                SqlCommand cmd = new SqlCommand("spGetClientNames", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter param = new SqlParameter("@term", searchTerm);
                cmd.Parameters.Add(param);
                conn.Open();
                SqlDataReader sdr = cmd.ExecuteReader();
                while (sdr.Read())
                
                        clientNames.Add(sdr["ime"].ToString());

                
            
            else
            
                SqlCommand cmd = new SqlCommand("spGetCompanyNames", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter param = new SqlParameter("@term", searchTerm);
                cmd.Parameters.Add(param);
                conn.Open();
                SqlDataReader sdr = cmd.ExecuteReader();
                while (sdr.Read())
                

                        clientNames.Add(sdr["naziv"].ToString());

                
            

        
        return clientNames;
    


我的 javascript 看起来像这样

<script type="text/javascript" language="javascript">
        $(function () 
            $('#<%=txtSearch.ClientID%>').autocomplete(
                source: function (request, response) 
                    var value = $("form input[type='radio']:checked").val();
                    $.ajax(
                        url: "Autocomplete.asmx/GetStudentNames",
                        data: searchTerm: request.term, rbtnValue:value,
                        type: "POST",
                        dataType: "json",
                        contentType: "application/json;charset=utf-8",
                        success: function (data) 
                            response(data.d);
                        ,
                        error: function (result) 
                            alert('Postoji problem s dohvaćanjem zahtjeva');
                        
                    );
                ,
                minLength: 0
            );
        );

    </script>

我是否需要为单选按钮实现其他东西。我的值是radio0 和radio1。 谢谢!

【问题讨论】:

你有什么错误吗? 奇怪的是,你想获得客户或公司,但你在javascript中的web服务方法是GetStudentNames。除其他外。 我没有收到任何错误,只是我的自动完成功能不起作用。 【参考方案1】:

在您的服务中,方法名称是GetClientNames,但在您的ajax 调用中,您调用的是方法GetStudentNames。很可能这可能是问题所在。如果这不是问题,请分享您的错误,以便我能够帮助您。

【讨论】:

我改了,没有帮助。浏览器是否有可能自动输入并且与我的冲突。也许关闭自动完成会有帮助

以上是关于在 Asp.net Web 表单中向 ajax 自动完成功能添加两个值的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax调用asp.net web表单代码

在 web 表单 asp.net 中显示从 ajax Json 到 ul 标记的数据

使用 jquery ajax 从 asp.net 网页表单页面调用 web api url

如何在不刷新的情况下使用 Ajax 在 ASP.NET MVC 中保存表单数据

如何在不刷新的情况下使用Ajax在ASP.NET MVC中保存表单数据

在 ASP.Net Core Web 应用程序(引导程序)中向导航栏添加下拉菜单