Ok, ich fühle mich, als würde ich hier verrückt werden. Ich benutze das select2 jquery plugin (Version 4) und lade Daten über Ajax herunter. Sie können also einen Namen eingeben und diese Kontaktinformationen zurückgeben. Aber ich möchte auch zurückgeben, zu welcher Organisation dieser Kontakt gehört.Select2 - Zusätzliche Daten über Ajax-Anruf zurückgeben
Hier meine select2 Initialisierung ist:
$('#contact_id').select2({
ajax: {
url: 'example.com/contacts/select',
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term,
page: params.page
};
},
processResults: function (data) {
return {
results: data
};
},
cache: true
},
minimumInputLength: 3,
maximumSelectionLength: 1
});
Und hier ist die Daten-I (Laravel Framework) bin Rückkehr:
foreach($contacts as $con) {
$results[] = [
'id' => $con->contact_id,
'text' => $con->full_name,
'org' => [
'org_id' => $con->organization_id,
'org_name' => $con->org_name
]
];
}
return response()->json($results);
also nicht 'org' ist angeblich zu befestigenden entweder die erstellte Option oder wählen Sie Element durch select2? Also könnte ich etwas wie $('#contact_id').select2().find(':selected').data('data').org
oder $('#contact_id').select2().data('data').org
oder etwas ähnliches tun?
idealistisch, würde dies wie folgt aussehen:
<select>
<option value="43" data-org="{org_id:377, org_name:'Galactic Empire'}">Darth Vader</option>
</select>
Ich schwöre, dass ich bestätigt diese letzte Woche gearbeitet, aber jetzt ist es völlig, dass org Eigenschaft zu ignorieren. Ich habe bestätigt, dass die zurückgegebenen JSON-Daten eine Organisation mit der richtigen org_id und org_name enthalten. Ich habe nicht in der Lage gewesen, etwas online zu graben, nur dieses Snippet documentation:
Die ID und Texteigenschaften für jedes Objekt erforderlich sind, und das sind die Eigenschaften, die Select2 für die internen Datenobjekte verwendet. Alle zusätzlichen Parameter, die mit Datenobjekten übergeben werden, werden in den Datenobjekten enthalten, die von Select2 verfügbar gemacht werden.
Also kann mir jemand dabei helfen? Ich habe schon ein paar Stunden damit verschwendet.
EDIT: Da ich keine Antworten bekommen haben, meine aktuellen Plan ist es, die processResults
Rückruf zu verwenden versteckte Eingabefelder oder JSON-Blöcke, um zu laichen, die ich später in meinem Code verweisen wird. Ich denke, dass dies eine hacky Lösung ist angesichts der Situation, aber wenn es keinen anderen Weg gibt, werde ich das tun. Das wäre mir lieber, als einen weiteren Ajax-Anruf zu machen, um die Organisation zu bekommen. Wenn ich es umsetze, poste ich meine Lösung.
Hallo, ich habe im Augenblick das gleiche Problem. Ich muss zusätzliche Daten (nicht nur ID und Text) mit Datenattributen idealerweise übergeben. Hast du das Problem gelöst? – slick
Haben Sie jemals eine funktionierende Lösung dafür bekommen? –
Ich habe meine Lösung hinzugefügt. –