Javascript 使用java自动完成jQuery而不是筛选结果

Javascript 使用java自动完成jQuery而不是筛选结果,javascript,java,mysql,jakarta-ee,jquery-ui-autocomplete,Javascript,Java,Mysql,Jakarta Ee,Jquery Ui Autocomplete,我正在使用jQuery自动完成。它没有过滤我的结果。当前,当您在文本字段中键入字母时,它将在自动完成中显示所有结果,而不按您键入的字母进行过滤。我在网上看到jQuery文档,它说source:string需要在服务器端进行过滤,但我不知道如何做到这一点。我也希望过滤结果显示地址,结果的邮政编码,但当你点击自动完成选项时,它应该只输入名字和姓氏。我如何做到这一点 这是我的控制器代码: public class Con{ public Response execute(PageExext k

我正在使用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);

                        }
                    });
                }

            });
        });
    });

}    
函数caseinet(){
jQuery(文档).ready(函数(){
jQuery(函数(){
jQuery(“#C,#Caey,#CaseIr,#Casorney”).autocomplete({
//自动对焦:对,
//来源:[“c++”、“java”、“php”、“coldfusion”、“javascript”、“asp”、“ruby”]
来源:功能(请求、响应){
jQuery.ajax({
url:“page.request.do?page=test”,
键入:“获取”,
数据:{
期限:request.term
},
数据类型:“json”,
成功:函数(数据){
var dataArray=[];
对于(var k=0;k
更改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();

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

很抱歉,由于我的声誉,我不能写评论:(
如果您需要比firstname和lastname更多的数据,那么您必须编辑您的查询并在select子句中添加其他列。但是就像cheb1k4所说的,由于SQL注入,您必须至少使用一个准备好的语句。另外,您还使用JEE标记,因此可以使用JPA寻找一个持久性框架。但是当然,这取决于您的项目规模。

这适用于筛选,但我想显示结果的地址和邮政编码,但当我单击结果时,它应该只输入名字和姓氏。我怎么做?我之所以这样做,是因为有时人们可能有两个相同的记录,但不同的广告要知道谁的地址是对的还是错的,唯一的方法是能够显示地址信息和姓名,但只能在点击结果时输入姓名。