Mein Select2 3.4.5 funktioniert nicht mit JSON-Daten.
Hier ist mein Eingabefeld für HTML:
<input class='form-control col-lg-5 itemSearch' type='text' placeholder='select item' />
… Und mein JavaScript
$(".itemSearch").select2({
placeholder: "Search for an Item",
minimumInputLength: 2,
ajax: {
url: "/api/productSearch",
dataType: 'json',
quietMillis: 100,
data: function (term, page) {
return {
option: term
};
},
results: function (data, page) {
var more = (page * 10) < data.total;
return {
results: data.itemName,
more: more
};
}
},
formatResult: function (data, term) {
return data;
},
formatSelection: function (data) {
return data;
},
dropdownCssClass: "bigdrop",
escapeMarkup: function (m) {
return m;
}
});
Ich habe mit Laravel 4 eine API erstellt, die einen Wert zurückgibt, wenn ich etwas in mein Textfeld eingebe.
Hier ist das Ergebnis, wenn ich "test" in mein Textfeld eingebe:
[{"itemName":"Test item no. 1","id":5},
{"itemName":"Test item no. 2","id":6},
{"itemName":"Test item no. 3","id":7},
{"itemName":"Test item no. 4","id":8},
{"itemName":"Test item no. 5","id":9},
{"itemName":"Test item no. 6","id":10},
{"itemName":"Test item no. 7","id":11}]
Ich kann das Ergebnis nicht zu meiner Select2-Dropdown-Liste hinzufügen. Ich denke formatSelection
und formatResult
verursache das Problem, weil ich nicht weiß, welcher Parameter darauf platziert werden soll. Ich weiß nicht, wo ich diese Parameter wie Container, Objekt und Abfrage sowie die Werte erhalten soll, die zurückgegeben werden sollen, oder ist meine JSON-Antwort falsch?
javascript
json
laravel
jquery-select2
melvnberd
quelle
quelle
für select2 v4.0.0 etwas anders
quelle
id
undtext
Schlüsselwerte.In Version 4.0.2 etwas anders Nur in
processResults
und inresult
:Sie müssen hinzufügen
data.items
inresult
.items
ist Json Name:quelle
items
ausdata.items
würde ich nicht hinzufügen müssenitems
Attribut auf die Antwort richtig? ;)$.map(data, function (item)
ob Ihr json ein Array ist:[ {"id": 1,"text": "One"}, {"id": 2,"text": "Two"} ]
Hier gebe ich Ihnen mein Beispiel, das -> Länderflagge, Stadt, Bundesland, Land enthält.
Hier ist meine Ausgabe.
Fügen Sie diese beiden Cdn js oder Links hinzu.
js Skript
Erwartete JSON-Antwort.
quelle
Auf diese Weise habe ich mein Problem behoben. Ich erhalte Daten in Datenvariablen und bei Verwendung der oben genannten Lösungen wurde ein Fehler angezeigt
could not load results
. Ich musste die Ergebnisse in processResults anders analysieren.quelle
Die Probleme können durch falsche Zuordnung verursacht werden. Sind Sie sicher, dass Ihre Ergebnismenge in "Daten" festgelegt ist? In meinem Beispiel gibt der Backend-Code Ergebnisse unter dem Schlüssel "items" zurück, sodass die Zuordnung folgendermaßen aussehen sollte:
und nicht:
quelle
Mein Ajax wird nie abgefeuert, bis ich das Ganze eingewickelt habe
setTimeout(function(){ .... }, 3000);
Ich habe es in einem montierten Bereich von Vue verwendet. es braucht mehr Zeit.
quelle
Wenn keine Ajax-Anfrage ausgelöst wird, überprüfen Sie bitte die select2-Klasse im select-Element. Durch Entfernen der Klasse select2 wird dieses Problem behoben.
quelle