2017-06-15 55 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

相關問題