2010-05-04 7 views
1

Seulement commencé aujourd'hui, mais j'ai de gros problèmes pour essayer de comprendre JSON/AJAX etc, j'ai obtenu mon code jusqu'à présent, mais je suis perplexe sur la façon de retourner les données tirées par le Demande AJAX à la fonction complète de jQuery Auto.JSON + PHP + JQuery + Problème de saisie semi-automatique

var autocomplete = new function(){ 
this.init = function() { 
    $('#insurance_destination').autocomplete({source: lookup}); 
} 

    function lookup(){ 
    $.ajax({ 
     url: "scripts/php/autocomplete.php", 
     data: {query:this.term}, 
     dataType: "json", 
     cache : false, 
     success: function(data) {  
      for(key in data){ 
       return { 
        label: key, 
        value: data[key][0] 
        } 
      }          
     }  
}); 
} 

}

et l'exemple de la chaîne JSON étant renvoyée par un script PHP { "Ouganda": [ "UGA", "UK4", "hors monde États-Unis, le Canada et les Caraïbes"] }

Répondre

1

Normalement, vous ne devez pas vous faire interroger ajax:

$('#insurance_destination').autocomplete('url_here', {options_here}); 

Cela suppose que nous parlons de greffon standard jquery autocomplete. Est-ce que je vous comprends bien?

modifier Vérifier api
http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions
Il y a aussi quelques exemples.

+0

J'ai essayé aussi, mais il ne semble pas fonctionne soit ... ce qui pourrait être un problème avec mon PHP, bien qu'avec le code manuel il renvoie une chaîne JSON qui semble fonctionner correctement, mais je ne peux pas obtenir la boîte de saisie semi-automatique à remplir avec les données. – RohanCS

+1

Il n'est pas supposé prendre json, les valeurs doivent être séparées par des sauts de ligne. Consultez cette page avec des exemples, et en particulier un exemple de script php fourni: http://view.jquery.com/trunk/plugins/autocomplete/demo/ Faites-moi savoir si cela aide. –

0

C'est le code que j'ai fini avec, cela fonctionne dans Chrome et Firefox, mais pas dans IE 6/7 ...

var autocomplete = new function(){ 
    this.init = function() { 
     $('#insurance_destination').autocomplete({ 
      source: function(request, response) { 
       debugger; 
       $.ajax({ 
        url: "scripts/php/autocomplete.php", 
        dataType: "json", 
        data: {query:this.term}, 
        success: function(data) { 
        response($.map(data.countries, function(item) { 
         return { 
          label: '<strong>'+item.name+'</strong>'+' '+item.description, 
          value: item.name, 
          code : item.region 
         } 
        })) 
       } 
      }) 
     }, 
     minLength: 2, 
     select: function(event, ui) { 
      $('#insurance_iso_code_hidden').val(ui.item.code); 
     }, 
     open: function() { 
     }, 
     close: function() { 

     } 
     }); 
    } 


    }