twitter bootstrap typeahead 2.0.4 ajax Fehler
Ich habe den folgenden code, die auf jeden Fall gibt ein richtigen Daten führen, wenn ich die 2.0.0 version, aber für einige Grund bootstrap ist typeahead-plugin gibt mir einen Fehler aus. Ich klebte es unter dem code-Beispiel:
<input id="test" type="text" />
$('#test').typeahead({
source: function(typeahead, query) {
return $.post('/Profile/searchFor', { query: query }, function(data) {
return typeahead.process(data);
});
}
});
Wenn ich dieses Beispiel, ich bin immer ein jQuery bug, der sagt Folgendes:
**
item is undefined
matcher(item=undefined)bootst...head.js (line 104)
<br/>(?)(item=undefined)bootst...head.js (line 91)
<br/>f(a=function(), b=function(), c=false)jquery....min.js (line 2)
<br/>lookup(event=undefined)bootst...head.js (line 90)
<br/>keyup(e=Object { originalEvent=Event keyup, type="keyup", timeStamp=145718131, more...})bootst...head.js (line 198)
<br/>f()jquery....min.js (line 2)
<br/>add(c=Object { originalEvent=Event keyup, type="keyup", timeStamp=145718131, <br/>more...})jquery....min.js (line 3)
<br/>add(a=keyup charCode=0, keyCode=70)jquery....min.js (line 3)
<br/>[Break On This Error]
<br/>return item.toLowerCase().indexOf(this.query.toLowerCase())**
Irgendwelche Gedanken? ... Der gleiche code funktioniert in der 2.0.0 version des plugins, kann Sie aber nicht schreiben, um meine knockout-Objekt-Modell.
DAS TYPEAHEAD-CODE FÜR die 2.0.0 version:
var searchFunction = function(typeahead, query) {
$.ajax({
url: "/Profile/searchFor?tableName=" + tableName + "&query=" + query + "&extendedData=" + $("#" + extendedData).val(),
success: function(data) {
if (data.errorText != null) {
toggleLoading("false");
showDialog(data.errorText, "Error");
return;
}
var result = data.results.split("::");
typeahead.process(result);
},
select: function(event, ui) {
}
});
}
$("#" + inputBoxId).typeahead({
source: searchFunction,
onselect: function(obj) {
}
});
- und was ist die vollständige Fehlermeldung bitte
- Hinzugefügt mehr info im original-post.
- In der Bootstrap typeahead
source
muss ein array sein. twitter.github.com/bootstrap/javascript.html#typeahead - Es gibt auch keine Möglichkeit, dass dies in
2.0.0
: github.com/twitter/bootstrap/blob/... Es gibt nur eine Stelle im code, wosource
verwendet wird, als argument für$.grep
. - In jedem Szenario, ich bin nicht in der Lage, um die AJAX-Aufruf, arbeiten für die 2.0.4 version der typeahead, auch wenn ich die Kraft wieder in die Ergebnisse der ajax-Aufruf als array. Wie es aussieht ist es gar nicht immer um den ajax-call.
- bootstrap typeahead funktioniert nur mit einem schlichten und einfachen array-dargestellt durch die Dokumentation und den source code... man muss die jQuery-UI-autocomplete oder etwas anderes.
- Eigentlich vorher habe ich es mit einer remote-Datenquelle, aber für einige Grund wenn ich die input-box, um die Seite dynamisch, es funktioniert nicht richtig. Es ist sehr merkwürdig.
- Der code auf der Unterseite der original-Beitrag macht ein entfernen typeahead Anruf mit version 2.0.0 der typeahead-plugin.
- Das ist nicht der bootstrap typeahead, es nicht an die
source
als eine Funktion und es muss nicht einmal eine.process
Methode. Können Sie einen link auf die website mit diesem? Oder machen Sie einen jsfiddle?
Du musst angemeldet sein, um einen Kommentar abzugeben.
1) Bootstrap typeahead v2.0.2 Lösung
haben Sie einen Blick auf dieser pull-request, es sieht aus wie das, was Sie suchen (eine Gabel von bootstrap typeahead v2.0.2).
Ich verwende es selbst und es funktioniert 🙂
2) Bootstrap typeahead v. 2.1.0-work in progress-Lösung
Sie können auch versuchen,diese Lösung. Ich habe gerade mein Projekt verwenden Sie diese ein, denn es wird unterstützt, in zukünftigen Versionen, und es sieht sauberer aus 🙂
In meinem Fall:
Wo der script url_path requiers 2 Argumente q (string) und limit (die Ergebnisse beschränken) und gibt die json-Antwort (array):
Beispiel die Antwort auf Abfrage ich mit limit 4:
Für Menschen, die versuchen, zum generieren von JSON-Daten (ohne Verwendung von php-Funktionen json_encode) und Frage mich, warum bootstrap-typeahead-Gabel von Terry Rosen nicht die Arbeit an ajax-call
Das format des zurückgegebenen JSON-Daten hat dann die form :-
[{"id":"1","name":"Altes Auto"},{"id":"2","name":"Castro Strassenbahn"},{"id":"3","name":"Green classic cars"},{"id":"4","name":"Autos, die in der Antique Row"}]
Beachten Sie die Anführungszeichen
Den ganzen Tag versucht herauszufinden, was das problem war, ich dachte, es wäre klug, es hier zu posten. Vielleicht mein Verständnis von JSON falsch war, aber firebug zeigt die zurückgegebenen Daten als gültiges JSON-auch wenn das id-und name-Felder werden nicht zitiert. Außerdem, die response-header sollte auf 'application/json'. Hoffe, das jemand hilft.
Auf version 2.0.4 typeahead ist buggy und nimmt keine Funktionen als Quelle, nur arrays. Ich habe ein Upgrade auf 2.1 und es funktioniert wie erwartet.