У меня проблемы с получением автозаполнения для работы, и я считаю, что это из-за синтаксического анализа.
Код JavaScript:
$('#id_emp_name').autocomplete({
source: '/mycompany/employees.json',
minLength: 1,
dataType: 'json',
delay: 0,
parse: function(data) {
var parsed = [];
for(var i = 0; i < data.fields.length; i++) {
parsed[parsed.length] =
{
data: data.fields[i],
value: data.fields[i].eng_name,
result: data.fields[i].eng_name
};
}
return parsed;
},
formatItem: function(item) {
var name = '';
name = '(' + item.eng_name + ', ' + item.rank + ')';
return name;
}
});
Пример вывода JSON: url.com/mycompany/employees.json?term=e
:
[
{
"pk": 1,
"model": "system.employees",
"fields": {
"salary": "1234",
"rank": "manager",
"entity_status": "n1",
"chi_name": "n/a",
"eng_name": "Eli",
"department": "marketing",
"employment_end_date": null,
"employment_date": "2011-09-20"
}
}
]
Вид:
def employeeJSON(request):
if request.method == 'GET' and request.GET['term']:
q_term = request.GET['term']
emp_list = Employees.objects.filter(eng_name__icontains=q_term)
json_serializer = serializers.get_serializer('json')()
json_data = json_serializer.serialize(emp_list, ensure_ascii=False)
return HttpResponse(
json_data, mimetype='application/json; charset=utf-8'
)
Я использую jQuery UI автозаполнение. Я не получаю значений при вводе в текстовое поле, всплывающее окно автозаполнения частично выскакивает без значений.
Однако всякий раз, когда я печатаю, я вызываю GET-запросы:
[23/Sep/2011 18:59:51] "GET /mycompany/employees.json?term=e HTTP/1.1" 200 241
[23/Sep/2011 18:59:53] "GET /mycompany/employees.json?term=el HTTP/1.1" 200 241