Как вы используете POST с JQuery Autocompleter? - PullRequest
1 голос
/ 11 июля 2009

jQuery v1.2.6

Плагин jQuery.autocompleter v1.1pre (с сайта jQuery)

Я не могу отправить "type:" POST "обратно в мой веб-сервис. Я не могу заставить его распознаваться автозаполнением. Мысли? * * 1005

Этот код работает нормально, пока я ищу строку запроса "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 или клавишу ВВОД). Я делаю это с делегатом result ().

Я действительно надеюсь, что приведенный выше код поможет другим в будущем разобраться и с автозаполнением. Проголосуй, если получится.

Совет: Имена свойств data [i] .Data и data [i] .Name являются именами свойств JSON.

Ответы [ 2 ]

2 голосов
/ 12 августа 2009

В настоящее время (Autocompleter 1.1pre) нет способа заставить его опубликовать без изменения кода плагина.

Я только что оставил отправку строк запросов. Спасибо всем за ответы, я поднял голос.

1 голос
/ 11 июля 2009

Можно установить значение по умолчанию для всех вызовов jquery ajax, которые будут публиковаться, а затем просто переопределить их в любом скрипте, который вы хотите. Переопределение, вероятно, будет работать и для этого ... Попробуйте поместить это в верхней части вашего кода:

$.ajaxSetup({
    type: 'POST'
});

Вы можете использовать вызов $.ajaxSetup(), чтобы установить значения по умолчанию для любой из нормальных опций $.ajax / $.post / $.get. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...