jQuery v1.2.6
Плагин jQuery.autocompleter v1.1pre (с веб-сайта jQuery)
Я не могу отправить «тип: «POST»» обратно в свой веб-сервис. Я не могу заставить его распознаваться автозаполнением. Мысли?
Этот код ниже работает нормально, пока я ищу строку запроса «q». Но я хотел бы использовать это для более продвинутых функций в будущем, передавая больше параметров, и был бы признателен, как отправлять сообщения с помощью автозаполнения.
Я знаю об опции extraParams. Но это дополнительные параметры, которые передаются через GET или POST (если мы сможем заставить POST работать). Это не меняет его для отправки в виде POST.
$(function() {
$('#searchBox').autocomplete(
"/services/college.asmx/lookupColleges",
{
delay: 5,
minChars: 1,
matchSubset: 1,
matchContains: 1,
cacheLength: 10,
autoFill: false,
dataType: 'json',
parse: function(data) {
var rows = new Array();
for (var i = 0; i < data.length; i++) {
rows[i] = {
data: data[i]
, value: data[i].Data
, result: data[i].Name
};
}
return rows;
},
formatItem: function(row, i, n) {
return row.Name;
}
}).result(function(event, row) {
processSelection(this, row.Data);
});
});
Я попытался добавить параметр для POST, как указано в примере кода ниже. Но он по-прежнему отправляется как GET.
delay: 5,
minChars: 1,
matchSubset: 1,
matchContains: 1,
cacheLength: 10,
autoFill: false,
dataType: 'json',
type: 'POST',
Любая помощь приветствуется.
Благодарю вас!
PS, многое из этого недокументировано, и это было PITA, чтобы выяснить это после проб и ошибок. Слава Богу за Firebug.
Вы заметите, что я:
- получение JSON от веб-сервиса
- Автозаполнение не может обрабатывать JSON изначально, поэтому мне нужно разобрать его в свой собственный массив.
- Поскольку теперь я возвращаю пользовательский объект массива, необходимо перезаписать formatItem, чтобы обработать новый объект массива для целей отображения.
- И, наконец, снятие денег. Я хочу обработать дополнительные данные в этой строке после того, как пользователь выберет строку (щелчок мышью, клавиша TAB или ENTER). Я делаю это с помощью делегата result().
Я действительно надеюсь, что приведенный выше код поможет другим в будущем разобраться с автозаполнением, а также всем, что требует обратного проектирования.
Совет: Имена свойств data[i].Data и data[i].Name — это имена свойств JSON.