autocomplete返回未定义的数据

时间:2012-06-21 18:50:02

标签: django jquery

要对输入进行自动完成,我这样做: 在views.py

def getpositions(request):
    if request.is_ajax():
        query = request.GET.get("term", "")
        positions=Position.objects.filter(name__icontains=query)
        results = []
        for position in positions:
            position_json={}
            position_json['name']=position.name
            results.append(position_json)
        data=simplejson.dumps(results)
    else:
        data = 'error'
    return HttpResponse(data, mimetype='application/json')
template中的

$(document).ready(function(){
                    $("#positions").autocomplete({
                        source: "{% url CompanyHub.views.getPositions%}",
                        success: function( data ) {
                                    response( $.map( data, function( item ) {
                                        return {
                                            label: item.name,
                                            value: item.name
                                        }
                                    }));
                                },
                        minLength: 2,
                      });
                });

#positions是:<input type="text" id="positions" />

每件事都没问题,但它只是显示Undefined而不是显示结果列表,我尝试了很多东西,但没办法!!

1 个答案:

答案 0 :(得分:0)

jQuery UI自动填充功能没有用于格式化数据的success选项。在此处查看选项列表http://jqueryui.com/demos/autocomplete/。相反,你可以使用source选项的回调函数,自己处理你自己的ajax调用,并按照你想要的格式化数据。

$("#positions").autocomplete({                    
       source: function( req,resp ) {
         $.get("{% url CompanyHub.views.getPositions%}",
              {term:req.term},function(data){
                   resp( $.map( data, function( item ) {
                                        return {
                                            label: item.name,
                                            value: item.name
                                        };
                                    })
                             );
                           });
            },
            minLength: 2,
            });