【问题标题】:jQuery autocomplete with java not filtering resultjQuery自动完成与java不过滤结果
【发布时间】:2016-03-30 16:04:57
【问题描述】:

我正在使用 jQuery 自动完成。它没有过滤我的结果。目前,当您在文本字段中输入一个字母时,它会在自动完成中显示所有结果,而不会按您输入的字母进行过滤。我在网上看到了 jQuery 文档,它说 source: string 需要在服务器端进行过滤,但我不知道该怎么做。我还希望过滤结果显示结果的地址、邮政编码,但是当您单击自动完成选项时,它应该只输入名字和姓氏。我如何做到这一点。

这是我的控制器代码:

public class Con{
    public Response execute(PageExext k) throws Exception {

        TextResponse tr = k.createTextResponse();

        r.setContentType("application/json");

        try {

            String term = etk.getParers().getSle("term");
            String sqlJson = t.creaQL("Select c_first_name, c_last_name from t_cct").fetchJSON();
            r.put("aadata", sqlJson);

        }catch (Exception e ) {

            e.printStackTrace();
        }

        return r;

    }

}

这是我的 javascript 自动完成功能:

function caseInete() {

    jQuery(document).ready(function() {
        jQuery(function() {
            jQuery("#C, #Caey, #CaseIr, #Casorney").autocomplete({

                //  autoFocus: true,

                // source: [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ]

                source : function (request, response) {
                    jQuery.ajax({
                        url : "page.request.do?page=test",
                        type : "GET",
                        data : {
                            term : request.term
                        },
                        dataType : "json",
                        success : function(data) {  

                            var dataArray = [];
                            for(var k = 0; k < data.length; k++) {
                                // Add items to array
                                dataArray.push(data[k].c_first_name + " " + data[k].c_last_name);
                            }

                            response(dataArray);

                        }
                    });
                }

            });
        });
    });

}    

【问题讨论】:

    标签: javascript java mysql jakarta-ee jquery-ui-autocomplete


    【解决方案1】:

    更改您的 SQL 查询以考虑您的术语并通过以下方式添加订单:

    String sqlJson = etk.createSQL("Select c_first_name, c_last_name from t_contact where c_first_name like '%" + term + "%' order by c_first_name").fetchJSON();
    

    您还应该使用与我的示例不同的准备好的语句。

    【讨论】:

    • 这适用于过滤,但我想显示结果的地址和邮政编码,但是当我点击结果时,它应该只输入名字和姓氏我该怎么做?我这样做的原因是因为有时人们可能有两个相同的记录但地址不同,并且知道谁拥有正确或错误地址的唯一方法是能够将地址信息与名称一起显示但只输入单击结果时的名称。
    【解决方案2】:

    抱歉,由于我的声誉,我无法发表评论 :( 如果您需要比名字和姓氏更多的数据,那么您必须编辑查询并在 select 子句中添加其他列。但是就像 cheb1k4 所说的那样,您必须至少使用准备好的语句,否则会发生 SQL 注入。而且您还使用 JEE 进行了标记,因此请查看使用 JPA 的持久性框架。但这当然取决于您的项目规模。

    【讨论】:

      猜你喜欢
      • 2012-01-24
      • 2014-05-09
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2011-01-04
      • 1970-01-01
      • 2023-04-05
      相关资源
      最近更新 更多