没有填充数据集的带有ajax响应的jQuery自动完成

时间:2019-02-20 12:21:15

标签: javascript jquery ajax jquery-ui-autocomplete

我遇到了以ajax数据为源的jquery自动完成问题。返回的数据是正确的,并且没有发出任何错误。但是结果仍然没有按预期显示。

我已经关注了与此问题相关的所有stackoverflow问题。一切都指向我所做的事情。因此,它不是所有这些问题的重复。

如果我使用局部变量数据作为数据源,那么一切都会按预期进行。 UI不会出现问题,因为局部变量和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;
        }
      });

我在“ Response”方法中使用了直接的“ response”方法和“ Map”。似乎没有任何作用。

当我控制结果并发出警报时,一切似乎都很好。

下图显示了我使用的结果和控制台日志。

图片1: enter image description here

图片2: enter image description here

在第一张图片中,源是局部变量,并且在用户开始键入时显示结果。下面是同一本地变量的控制台日志。

第二张图片用于ajax响应。当用户键入“ func”时,它正在调用ajax,并且响应正在打印。但是结果没有按预期显示。绿色框表示局部变量的响应,红色框表示ajax响应数据。两者似乎是相同的。但是缺少了一些东西,当结果集可用时,它不显示结果。

有人可以帮我吗,这是怎么回事?

1 个答案:

答案 0 :(得分:0)

问题已解决。问题是尾随分号“;”在响应方法中return语句的末尾。

代码更改为:

<host-element>
      <my-element [getStyle] = "getStyleFnFromHost"> </my-element>
</host-element>

我已经在return语句的末尾删除了分号。