如何在jqueryui自动完成中访问对象响应(而不是列表)?

时间:2014-02-13 02:57:38

标签: javascript jquery jquery-ui flask

我正在尝试实现jqueryui自动完成功能,并返回以下结果:

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

如果它只是一个对象列表,下面的代码可以工作,但由于我使用的是Flask,它不会让我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 个答案:

答案 0 :(得分: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