1

要对输入进行自动完成,我这样做:在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而不是显示结果列表,我尝试了很多东西但没有办法!

4

1 回答 1

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,
            });
于 2012-06-21T19:01:49.990 回答