2011-01-04 11 views
0

Ich benutze AutoSuggest Plugin von Draw für einige Zeit, aber bis jetzt habe ich meine Daten in meine JS hart codiert, ich versuche zu sehen, ob ich AJAX verwenden kann, um die JSON-Daten zurückzugeben und solche Daten abfragen. Ich scheine es funktioniert zu haben, aber egal, was ich versuche, ich kann nicht die Ergebnisse in der Drop-Down-UL angezeigt werden, die es über jquery erstellt.autoSuggest-Plugin-Hilfe mit AJAX-Ergebnisse nicht angezeigt

Der JSON kommt zurück, wie es sollte. Das ist mein PHP-Code:

$input = $_GET["q"]; 
    $data = array(); 
    // query your DataBase here looking for a match to $input 
    $query = mysql_query("SELECT `state`, `idStates` FROM `states_list` WHERE (`state` LIKE '%{$input}%' OR `abbr` LIKE '%{$input}%')"); 
    while ($row = mysql_fetch_assoc($query)) { 
     $json = array(); 
     $json['value'] = $row['idStates']; 
     $json['name'] = $row['state']; 
     $data[] = $json; 
    } 
    header("Content-type: application/json"); 
    echo json_encode($data); 

und meine JS:

$('#state').autoSuggest('resources/ajax/suggest.php', {matchCase: true, minChars: 2, startText: '', emptyText: '', retrieveComplete: function(data){ console.log(data.value) }}); 

ich versucht haben, zu debuggen, so habe ich den retrieveComplete Parameter dort dafür.

die PHP die AJAX mit dem JSON Inhalt zurück ... jetzt nur um herauszufinden, wie die JS, um es zu holen hängen Sie ihn an die UL LI

UPDATE:

ich die Daten appened zu einem Test Div und seine Rückkehr

Antwort

1

Also, wenn ich das richtig mache, erhalten Sie eine Antwort, die Sie in der Variable "Ergebnisse" speichern?

Ich nehme an, dass diese Objekte jeweils eine Reihe von Schlüssel/Wert-Paaren enthält. Oder vielleicht verschachtelte Objekte? Es wäre schön, wenn Sie die Antwort gepostet hätten. Sie können das tun, indem Sie Firebug in Firefox öffnen (wenn Sie dieses Addon installiert haben). Unter "Konsole" sehen Sie die Serverantwort. Öffnen Sie es und Sie werden 4 Tabs sehen. Öffnen Sie den Tab namens JSON. Rechtsklicken Sie darauf und wählen Sie "Antworttext kopieren". Dann füge es hier ein.

Es gibt ein paar Möglichkeiten, dies zu erreichen. Dies ist einer von ihnen:


var liStr = '', 
    $yourUl = $('#id-of-your-ul'); 

// Assuming the response object is stored in the variable data 
for (key in data) { 
    liStr += '<li>Your key: ' + key + ', Your key value: ' + data[key] + '</li>'; 
} 

$yourUl.append($(liStr)); 

Ohne es testen zu können, ich denke, dass es funktionieren könnte. Natürlich abhängig davon, wie deine Antwort aussieht. Probieren Sie es aus und lassen Sie es mich wissen.

+0

meine Antwort ist dies, wenn sie in firebug btwe zurückgegeben {Wert: 'WY', Name: 'Wyoming'} – Eli

+0

Oh, ich verstehe. Also muss ich meine Antwort oben ändern. Nur eine Sekunde. – Patrik

+0

nein ist ok ich konnte bekommen, was ich brauchte, indem ich obj.name in der Ausgabeabteilung herausrief. Ich bekomme immer noch nicht die Ergebnisse, die ich brauche, ich denke nur, es gibt einen Bug mit dem Plugin und jquery 1.4.4 oder etwas in dieser Richtung, das lässt mich die JSON-Daten nicht abstufen und wird automatisch in das UL eingefügt. Dies ist die Website für das Plugin als Beispiel URL: http: //code.drewwilson.com/entry/autosuggest-jquery-plugin/ – Eli

Verwandte Themen