Использование jQuery UI Автозаполнение виджета с меткой / значением в JSON, но без отображения результатов - PullRequest
0 голосов
/ 15 февраля 2011

Я использую виджет автозаполнения, чтобы заполнить идентификатор клиента в форме.Он покажет метку, имя клиента, но должен передать идентификатор.Я использую json и этот код javascript для обработки:

    $("input#clientid").autocomplete({
        source: function(request, response) {
            $("#ajax-loader").fadeIn('normal');

            $.ajax({
                url: BASE_URL + 'projects/ajax/get_clients',
                data: request,
                dataType: "json",
                type: "POST",
                success: function(data) {
                    response(data);
                }
            });

            $("#ajax-loader").fadeOut("normal");
        },
        minLength: 2
    });

В моем контроллере PHP я печатаю напрямую некоторые результаты с помощью JSON, firebug показывает мне так:Но автозаполнение не отображается и нет ошибки в консоли.Когда я говорю «не показано», я говорю, что нет «div» за пределами <input /> для выбора значения.Извините, не знаю, как это выразить хорошо.

Если я попробую простой пример с сайта без пульта, он будет показан.Я не знаю, что я делаю плохо.

Заранее спасибо!

1 Ответ

2 голосов
/ 15 февраля 2011
 $.ajax({
                url: BASE_URL + 'projects/ajax/get_clients',
                data: request,
                dataType: "json",
                type: "POST", <--- //
                success: function(data) {
                    response(data);
                }
            });

вы устанавливаете тип запроса неверным образом ... поэтому он устанавливает тип запроса ajax по умолчанию, равный GET

Обновление:

возможно ли выполнить запрос ajax перед использованием поля ввода autocomplete с вами? что-то вроде

$.ajax({
                url: BASE_URL + 'projects/ajax/get_clients',
                data: request,
                dataType: "json",
                type: "POST",
                success: function(data) {
                    xhrResponse(data);
                }
            });


function xhrResponse(data){

$("#clientid").autocomplete({
        source: function(data, response) {
            $("#ajax-loader").fadeIn('normal');

           response($.map( data, function( item ) {
                        return {
                            label: item.label,
                            value: item.value
                        }
                    }));


            $("#ajax-loader").fadeOut("normal");
        },
        minLength: 2
    });

}
...