2010-11-11 22 views
1

J'utilise la saisie semi-automatique du plugin jQuery dans une application web et je transmets des données json simples à la saisie semi-automatique. Lorsque je transmets des données de cette façon, par les mots variables. Autocomlete fonctionne bien. Mais quand je le télécharge depuis le serveur, je reçois ce message d'erreur "data.split n'est pas une fonction". Je définis également l'en-tête Content-type: application/json dans mon script côté serveur. J'essaie aussi de définir l'option dans autocommplete dataType: 'json', mais toujours le même problème. Lorsque j'analyse des données dans l'option de saisie semi-automatique analyser: fonction (données) {..} il semble, que les données sont OK, mais je ne peux pas le lire en formatItem. Avez-vous une idée?jQuery autocomplete - data.split n'est pas une fonction

 
$(document).ready(function() { 
    $("#suggest").autocomplete("ajax.php?gsug="+whisp_id, { 
    formatItem: function(data, i, n) { 
     return data[0]; 
    }, 
     width: 342 
    }); 
}); 
+1

À quoi ressemble la réponse? –

+1

quelle autocomplétion jQuery utilisez-vous? Il y en a plus d'un. http://stackoverflow.com/questions/2421966/is-there-more-than-one-jquery-autocomplete-widget – Cheeso

Répondre

4

En supposant que vous utilisez cette saisie semi-automatique: http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions

Cette autocomplete attend des données à distance pas un tableau, il attend une chaîne, chaque entrée dans une ligne distincte.

Donc ce que vous pouvez faire: Renvoyez la réponse attendue ou créez votre propre fonction d'analyse pour la requête (peut être configurée en option).
Cette fonction doit retourner un tableau avec des objets, où les objets ont les données membres, la valeur, le résultat (jetez un oeil à l'analyse syntaxique méthode originale autocomplete.js pour voir ce qui est quoi)

De plus: Be Assurez-vous que la sortie ajax.php est une chaîne json valide (utilisez json_encode de php si vous ne le faites pas encore). Et définissez dataType sur 'json', comme vous l'avez déjà essayé auparavant.

+1

J'ai écrit un article il y a quelques temps à propos de la création d'une méthode JSON 'parse' pour cette version de AutoComplete - http : //blog.philipbrown.id.au/2008/10/jquery-ajax-autocomplete-with-json-data/. Pour info, le plugin de Jörn a été déprécié en faveur de la version jQuery UI qui accepte nativement les données JSON - http://jqueryui.com/demos/autocomplete/#remote – Phil

1

Parce que cet URL est juste chaîne pas une donnée json, vous devez d'abord obtenir les données.

essayer cette façon

$(document).ready(function() { 
    $.ajax({ 
     url: "ajax.php?gsug="+whisp_id, 
     cache: false, 
     success: function(jsondata){ 
      $("#suggest").autocomplete(jsondata, { 
      formatItem: function(data, i, n) { 
       return data[0]; 
      }, 
       width: 342 
      }); 
     } 
    }); 
});