2009-10-20 33 views
20

im nhận được phản hồi trong json, nhưng điều này sẽ không phân tích cú pháp phản hồi json. tôi đang làm gì sai? i could'nt tìm bất cứ điều gì trên doc http://docs.jquery.com/Plugins/Autocompletejquery tự động hoàn thành với phản hồi 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; 
    } 
}); 

Trả lời

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

kiểm tra dữ liệuLoại và phân tích cú pháp.

+0

btw đây là câu trả lời đúng với sự giúp đỡ của karim79 – Basit

+0

Hi cơ sở, tôi có cùng một vấn đề, đó là những gì bạn đã làm vì tôi nhận được một data.split không phải là một chức năng – Angela

+0

Tôi đã cố gắng làm theo câu trả lời này và nó không 't làm việc. đối số hàm formatItem không xác định. –

6

Tôi nghĩ rằng bạn chỉ cần ném vào một lựa chọn dataType, tôi nhớ sẵn sàng mà bạn có thể sử dụng bất kỳ tùy chọn $.ajax 's trong autocompleter:

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

với điều đó im nhận data.split không phải là một chức năng jquery/jquery.autocomplete.js Dòng 11 lỗi – Basit

+0

btw im không sử dụng chức năng đó ở bất cứ đâu .. bạn có thể thấy ở trên mã của tôi – Basit

+0

@basit - bởi vì bây giờ bạn đang làm việc với một đối tượng, 'split' là một hàm của kiểu' Array'. – karim79

1

Hãy thử khai báo các tùy chọn bên ngoài phạm vi của $(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); 

    }); 
}); 
Các vấn đề liên quan