jQuery 自动完成,将成功数据传递给 select 方法

jQuery Autocomplete, passing success data to the select method

我有 json 具有某些属性的响应。我为列表创建了一个数组。当我单击列表项时,一些输入将由项目 ID 填充。

为此,我正在考虑将完整的数据对象传递给 select 方法,然后如果单击列表中的某些项目,我将在数据对象中搜索 id,如果找到,我将打印它们所有的输入。 但是我无法成功将 fullObj 数据传递给 select 方法。它 returns 未定义错误。 这是我的代码:

$( "#musteriId" ).autocomplete({
    source: function( request, response ) {
        $.ajax({
            url : '/musteri-bul',
            dataType: "json",
            data: {
                name_startsWith: request.term,
            },
            success: function( data ) {
                //console.log(data);
                var arr = [];
                var i = 0;
                var fullObj = data;
                $.each(data, function(index, value){
                    console.log(index);
                    var obj = {
                        label: index
                    };
                    arr[i] = obj;
                    i++;
                });
                response(arr, fullObj);
            }
        });
    },
    minLength: 3,
    select: function(event, ui ) {
        console.log(fullObj);
    },
});

首先,进行 ajax 调用,然后,在成功回调时,使用现有数据开始 autocomplete

$.ajax({
    url : '/musteri-bul',
    dataType: "json",
    data: {
        name_startsWith: request.term,
    },
    success: function( data ) {
        //console.log(data);
        var arr = [];
        var i = 0;
        var fullObj = data;
        $.each(data, function(index, value){
            console.log(index);
            var obj = {
                label: index
            };
            arr[i] = obj;
            i++;
        });

        $( "#musteriId" ).autocomplete({
            source: arr,
            minLength: 3,
            select: function(event, ui) {
                console.log(fullObj);
            },
        });
    }
});

我已经解决了。我只是向 obj 添加了一些属性然后传递。

$( "#musteriId" ).autocomplete({
    source: function( request, response ) {
        $.ajax({
            url : '/musteri-bul',
            dataType: "json",
            data: {
                name_startsWith: request.term,
            },
            success: function( data ) {

                var arr = [];
                var i = 0;
                var fullObj = data;
                $.each(data, function(index, value){
                    $.each(value, function(idx, v){
                        var obj = {
                            label: idx,
                            value: v,
                            phone: 12313
                        };
                        if(idx == "isim"){
                            arr[i] = obj;
                            i++;
                        }
                    });
                });
                response(arr, fullObj);
            }
        });
    },
    minLength: 3,
    select: function(event, ui ) {
        console.log(ui);
    },
});