0

很抱歉社区中已经有类似的帖子,但我觉得很奇怪。它工作正常,但它影响了我的其他视图,并且不允许其他视图页面填充任何对话框..

我试图通过像这样将它包装在 function() 中来修复它

$('#_auto').autocomplete(function(){

但是,有了这个,我没有在 _auto 文本字段中得到 jason 值,并且在下一行中得到了意外的令牌错误。谁能帮我解决这个问题。

source: function(request,response){

这是我的代码:

$(function () {
    $('#_auto').autocomplete({
        selectFist: true,
        minLength: 2,
        source: function (request, response) {
            var sval = $('#_auto').val();
            //alert(sval);
            $.ajax({
                url: BASE_URL + '/controller/search/',
                type: 'POST',
                data: {
                    'term': sval,
                },
                dataType: 'json',
                success: function (data) {
                    console.log(data);
                    var dta = [];
                    orgdetails = [];
                    //response(data.d);
                    for (var i in data) {
                        dta.push(data[i].name);
                        orgdetails[data[i].name] = data[i].id;
                    }
                    response(dta); //response(dta);
                },
                error: function (result) {}
            }); //ajax
        }
    }).focus(function () {
        $(this).trigger('keydown.autocomplete');
    });
});

非常感谢

4

1 回答 1

1

我认为for循环应该是

var dta = $.map(data, function(v, i){
    orgdetails[v.name] = v.id;
    return {
        label: v.name,
        id: v.name
    };
});

小提琴

request.term另一个观察,您可以使用而不是获取当前搜索词$('#_auto').val()

完整代码:

$('#_auto').autocomplete({
    selectFist: true,
    minLength: 2,
    source: function (request, response) {
        $.ajax({
            url: BASE_URL + '/controller/search/',
            type: 'POST',
            data: {
                'term': request.term,
            },
            dataType: 'json',
            success: function (data) {
                console.log(data);
                orgdetails = {};

                var dta = $.map(data, function(v, i){
                    orgdetails[v.name] = v.id;
                    return {
                        label: v.name,
                        id: v.name
                    };
                });
                response(dta); //response(dta);
            },
            error: function (result) {}
        }); //ajax
    }
}).focus(function () {
    $(this).trigger('keydown.autocomplete');
});
于 2013-01-24T15:26:10.170 回答