2009-10-20 24 views
20

Ich bekomme Antwort in JSON, aber dies wird nicht analysieren die JSON-Antwort. Was mache ich falsch? i could'nt alles auf doc werfen Sie müssen nur http://docs.jquery.com/Plugins/Autocompletejquery Autocomplete mit JSON Antwort

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

Antwort

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; 
    } 
}); 

Überprüfen Sie die Option dataType und parse.

+0

BTW das ist die richtige Antwort mit Hilfe von Karim79 – Basit

+0

Hallo Basit, ich habe das gleiche Problem, was ist, dass Sie getan haben, weil ich eine data.split bekomme keine Funktion – Angela

+0

Ich habe versucht, diese Antwort zu folgen und es doesn arbeite nicht. Das Argument formatItem function ist nicht definiert. –

6

Ich denke, finden in einer dataType Option, ich readying daran erinnern, dass Sie eine $.ajax ‚s Optionen im Autocompleter verwenden können:

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

mit, dass im immer data.split ist keine Funktion jquery/jquery.autocomplete.js Zeile 11 Fehler – Basit

+0

btw Ich benutze diese Funktion nirgendwo .. Sie können über meinem Code – Basit

+0

@basit sehen - weil Sie jetzt mit einem Objekt arbeiten, ist "Split" eine Funktion des Typs 'Array'. – karim79

1

Probieren Sie die Optionen außerhalb des Anwendungsbereichs der $(document).ready(..)

Ex erklärt:

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); 

    }); 
});