/ / JSON + PHP + JQuery + Autocomplete Problem - Javascript, Jquery, Json

JSON + PHP + JQuery + Autocomplete Problem - Javascript, jquery, json

Ich habe erst heute angefangen, aber ich habe massivProbleme beim Versuch, JSON / AJAX usw. zu verstehen, ich habe meinen Code so weit erhalten, bin aber über die Rückgabe der von der AJAX-Anforderung abgerufenen Daten an die Funktion jQuery Auto complete überrascht.

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]
}
}
}
});
}

}

Ein Beispiel für die JSON-Zeichenfolge, die von einem PHP-Skript zurückgegeben wird {"Uganda": ["UGA", "UK4", "Weltweit ohne USA, Kanada und die Karibik"]}

Antworten:

1 für die Antwort № 1

Normalerweise müssen Sie keine Ajax-Abfrage selbst durchführen:

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

Dies setzt voraus, dass wir über ein standardmäßiges Jquery-Plug-In für automatische Vervollständigung sprechen. Verstehe ich dich richtig?

bearbeiten Überprüfen Sie das API
http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions
Es gibt auch einige Beispiele.


0 für die Antwort № 2

Dies ist der Code, mit dem ich endete, er funktioniert in Chrome und Firefox, aber nicht in 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() {

}
});
}


}