2017-06-15 1 views
0

Je veux présenter tous les clients et les donner à la saisie semi-automatique chaque fois que nécessaire. J'ai cette erreur rattrapée. La recherche de groupe est globale dans l'application.Uncaught TypeError: this.source n'est pas une fonction

<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>

Répondre

1

Initialiser autocomplete après la demande ajax complète, comme ci-dessous:

Essayez ceci:

$(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

Je veux les clients d'être une variable globale et économiser une fois et l'utiliser quand j'ai besoin. Je reçois toujours la même erreur. – dummy

+0

mise à jour réponse pour utiliser 'customers' globalement, assurez-vous que vous êtes en train d'initialiser autocomplete après succès ajax, sinon client est un tableau vide –

+0

Merci, j'ai deux problèmes maintenant - autocomplete est juste en tirant tout le filtrage de données ne fonctionne pas. La deuxième liste d'auto-complétion n'est pas rendue tout de suite. Sa liste d'affichage après avoir effacé l'onglet de recherche. – dummy