2014-02-13 26 views
0

我有我想實現一個jQueryUI的自動完成功能和下面的返回結果:如何在jqueryui自動完成中訪問對象響應(而不是列表)?

{'returned_results':[{'label':'red','value':'Fred'},{'label':'blue','value':'Marie'}] } 

如果它只是一個對象列表下面的代碼的工作,但因爲我用的燒瓶它不會讓我jsonify一個列表,所以我需要把結果放在一個字典/對象中。我如何訪問'returned_results'?

function tickerFormatter(){ 
    $.ui.autocomplete.prototype._renderItem = function(ul,item){ 
     var re = new RegExp(this.term,"i"); 
     var l = item.label; 
     var v = item.value; 
     .... 
     return $("<li></li>") 
     .data('item.autocomplete',item) 
     .append('<a>' + l + ':&nbsp;' + v + '</a>') 
     .appendTo(ul); 
    }; 
} 

$(function(){ 
    tickerFormatter(); 
    $("#tickers").autocomplete({ 
    minLength: 1, 
    source: '/my_api?', 
    select: function(event,ui){ 
     .... 

    } 
    }) 

    }); 

回答

1

你可以做兩件事情之一:

  1. 變化source使用function form

    $("#tickers").autocomplete({ 
        minLength: 1, 
        source: function(request, callback) { 
        $.getJSON('/my_api', request, 
         function(data) { 
          callback(data.returned_results); 
        }); 
        } 
    }); 
    
  2. 返回自己的自定義響應,使用make_response

    import json 
    from flask import make_response 
    
    # Then in your controller 
    response = make_response(json.dumps(list_of_results)) 
    response['Content-Type'] = 'application/json' 
    return response 
    
+0

哇,兩個很好的答案。我沒有嘗試第二個,但第一個很好!謝謝! – user3287829