2009-10-20 34 views
20

obtengo respuesta en json, pero esto no analizará la respuesta json. ¿Qué estoy haciendo mal? i could'nt encontrar nada en el doc http://docs.jquery.com/Plugins/Autocompletejquery autocompletar con la respuesta json

$("#users-allowed").autocomplete("/people/following.json", { 
    width: 320, 
    //max: 4, 
    highlight: false, 
    scroll: true, 
    scrollHeight: 300, 
    formatItem: function(response, i, max) { 
    console.log(response); 
    console.log(response['items']); 
    console.log(response.items); 
    return i + "/" + max + ": \"" + response.status_code + "\" [" + response.status_description + "]"; 

    //return "<img src='images/" + value + "'/> " + value.split(".")[0]; 
    }, 
    formatResult: function(response) { 
    //return value.split(".")[0]; 
    return response.status_description; 
    } 
}); 

Respuesta

33
$("#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; 
    } 
}); 

verifique los datos Opción de tipo y análisis.

+0

por cierto esta es la respuesta correcta con la ayuda de karim79 – Basit

+0

Hola, tengo el mismo problema, ¿qué es lo que hiciste porque estoy obteniendo un data.split no es una función – Angela

+0

traté de seguir esta respuesta y no lo hace no funciona el argumento de la función formatItem no está definido. –

6

Creo que sólo tiene que tirar en una opción dataType, recuerdo preparando que se puede utilizar cualquiera de las opciones $.ajax 's en el Autocompleter:

$("#users-allowed").autocomplete("/people/following.json", { 
    dataType: "json", 
    ... 
+1

con ese im conseguir data.split no es una función jquery/jquery.autocomplete.js error Línea 11 – Basit

+0

por cierto No estoy usando esa función en ningún lado. Puedes ver mi código – Basit

+0

@basit - porque ahora estás trabajando con un objeto, 'split' es una función de tipo' Array'. – karim79

1

Trate declarar las opciones fuera del alcance de $(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); 

    }); 
});