Автозаполнение JQuery с ответом ajax для набора данных не заполняется - PullRequest
0 голосов
/ 20 февраля 2019

У меня проблема с автозаполнением jquery с данными ajax в качестве источника.Возвращаемые данные являются правильными и не выдают никаких ошибок.Но все равно результаты отображаются не так, как должны.

Я следил за всеми вопросами, связанными с этой проблемой, в stackoverflow.И все указывает на то, что я сделал.Так что это не дубликат ни одного из этих вопросов.

Если я использую данные локальной переменной в качестве источника данных, все работает как положено.Это не проблема с пользовательским интерфейсом, так как один и тот же код используется как для локальных переменных, так и для данных ajax.

Мой код:

$("#dTSearch").autocomplete({
        source: function( request, response ) {
          $.ajax({                
            type: "POST",
              url: "{{path('dataSearch')}}",
              dataType: "json",
              data: {
                type: "dashboardType",
                searchTerm: $("#dTSearch").val()
              },
            success: function (data) {                  
              if(data.status == 200) {
                console.log(data.data);
                //response( data.data );
                //var dataSet = $.parseJSON(data);
                response($.map(data.data, function (item, i) {
                  //alert(item.value);
                  return {
                      id: item.id,
                      label: item.label,
                      value: item.value
                    };
                  })
                );
              }
            },
            error: function (data) {
              alert('error!');
              console.log(data);
            }
          });
        },
        minLength: 3,
        select: function( event, ui ) {
          alert(ui.item.value);
          return false;
        },
        open: function() {
          $(this).autocomplete('widget').css('z-index', 100);
          return false;
        }
      });

      $("#dTSearch1").autocomplete({
        source: dashboardTypes,
        minLength: 3,
        select: function( event, ui ) {
          $("#onlyFunctionalDiv").show();
        },
        open: function() {
          //$( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
          $(this).autocomplete('widget').css('z-index', 100);
          return false;
        }
      });

Я использовал метод прямого «ответа» и«Карта» в методе «Ответ».Кажется, ничего не работает.

Когда я утешал результаты и выставлял оповещения, все было в порядке.

На следующих рисунках показаны результаты и журналы консоли, которые я использовал.

Изображение 1: enter image description here

Изображение 2: enter image description here

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

Второе изображение для ответа ajax.Когда пользователь вводит «func», он вызывает ajax, а ответ печатает.Но результаты отображаются не так, как должны.Зеленое цветное поле показывает ответ локальной переменной, а красное цветное поле показывает данные ответа Ajax.Оба, кажется, одинаковы.Но чего-то не хватает, и он не отображает результаты, когда набор результатов доступен.

Может кто-нибудь мне помочь, что с этим не так?

1 Ответ

0 голосов
/ 21 февраля 2019

Проблема решена.Проблема в том, что конечная точка с запятой ";"в конце оператора возврата в методе ответа.

Изменения в коде:

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

Я удалил точку с запятой в конце оператора возврата.

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