jquery autocomplete with json response

前端 未结 3 929
囚心锁ツ
囚心锁ツ 2020-12-02 16:02

im getting response in json, but this wont parse the json response. what m i doing wrong? i could\'nt find anything on doc http://docs.jquery.com/Plugins/Autocomplete

<
相关标签:
3条回答
  • 2020-12-02 16:31
    $("#users-allowed").autocomplete("/people/following.json", {
      width: 320,
      dataType: 'json',
      highlight: false,
      scroll: true,
      scrollHeight: 300,
      parse: function(data) {
        var array = new Array();
        for(var i=0;i<data.items.length;i++) {
          array[array.length] = { data: data.items[i], value: data.items[i], result: data.items[i].username };
        }
        return array;
      },
      formatItem: function(row) {               
        var name = '';
        if (row.first_name && row.last_name)
          name = '('+row.first_name+', '+row.last_name+')';
        else if (row.first_name)
          name = '('+row.first_name+')';
        else if (row.last_name)
          name = '('+row.last_name+')';
    
        return row.username+' '+name;
      }
    });
    

    check dataType and parse option.

    0 讨论(0)
  • 2020-12-02 16:42

    Try declaring the options outside the scope of $(document).ready(..)

    Ex:

    var acCbo = {
            minChars: 1,
            delay:500,
            max: 100,
            width: 400,
            dataType: 'json', // this parameter is currently unused
            extraParams: {
                format: 'json', //pass the required context to the Zend Controller,
                filtro: 'id_procsianv,id_atividade',
                chave: function(){
                    return $('#id_procsianv').val()+','+$('#id_atividade').val();
                }
            },
            queryParam: "descricao",
            parse: function(data) {
                if (data['qtde']>0){
                    data = data['Cbo'];
                    var parsed = [];
                    for (var i = 0; i < data.length; i++) {
                        parsed[parsed.length] = {
                            data: data[i],
                            value: data[i].id_cbo,
                            result: $('<textarea/>').html(data[i].no_cbo).val()
                        };
                    }
                    return parsed;
                }else{
                    $('#id_cbo').val('');
                    return [];
                }
            },
            formatItem: function(item) {
                return item.no_cbo+ ' (' +item.id_cbo+ ')';
            }
        };
    
        $(document).ready(function(){
    
        $('#cbo').autocomplete('/cbos/index',acCbo)
        .result(function(e,data){
            $('#id_cbo').val(data.id_cbo);
    
        });
    });
    
    0 讨论(0)
  • 2020-12-02 16:53

    I think you just need to throw in a dataType option, I remember readying that you can use any of $.ajax's options in the autocompleter:

    $("#users-allowed").autocomplete("/people/following.json", {
        dataType: "json",
        ...
    
    0 讨论(0)
提交回复
热议问题