2017-06-15 30 views
0

我想预先安排所有客户,并在需要时将其提供给自动完成。我遇到了这个错误。整个应用程序中的组搜索是全局的。未捕获TypeError:this.source不是函数

<script> 
 
    $(document).ready(function() { 
 
     var customers = $.ajax({ 
 
      url: "http://localhost:8081/customers/all", 
 
      type: 'GET', 
 
      dataType: 'json', 
 
      success: function (data) { 
 
       $.map(data, function (v, i) { 
 
        return { 
 
         number: v.number, 
 
         name : v.name, 
 
        }; 
 
       }); 
 
      } 
 
     }); 
 

 
     $("#customer-search").autocomplete({ 
 
      minLength: 0, 
 
      source: customers, 
 
      select: function(event, ui) { 
 
       $("#group-search").val(ui.item.name); 
 
       $("#group-search-form").submit(); 
 
       return false; 
 
      }, 
 
     }).autocomplete("instance")._renderItem = function(ul, item) { 
 
      return $("<li>") 
 
       .append("<div>" + item.name + " " + item.number + "</div>") 
 
       .appendTo(ul); 
 
     }; 
 

 

 

 

 

 
    }); 
 
</script>

回答

1

初始化自动完成后Ajax请求完成后,象下面这样:

试试这个:

$(document).ready(function() { 
var customers = []; 
$.ajax({ 
    url: "http://localhost:8081/customers/all", 
    type: 'GET', 
    dataType: 'json', 
    success: function (data) { 
      $.map(data, function (v, i) { 
      return { 
       number: v.number, 
       name : v.name, 
      }; 
     }); 

     $("#customer-search").autocomplete({ 
      minLength: 0, 
      source: customers, 
      select: function(event, ui) { 
       $("#group-search").val(ui.item.name); 
       $("#group-search-form").submit(); 
       return false; 
      }, 
     }).autocomplete("instance")._renderItem = function(ul, item) { 
      return $("<li>") 
       .append("<div>" + item.name + " " + item.number + "</div>") 
       .appendTo(ul); 
     }; 
    } 
}); 



}); 
+0

我希望客户一个全局变量和保存它只需要一次就可以使用。我仍然得到同样的错误。 – dummy

+0

更新了全球使用客户的答案,只要确保在ajax成功后初始化自动完成,否则客户是一个空数组。 –

+0

谢谢,我现在有两个问题 - 自动完成只是拉起所有数据过滤不起作用。第二个自动完成列表不会立即显示。在清除搜索标签后显示列表。 – dummy

相关问题