Frage

Das Format für meine select 2 ist als solches:

$("#selectPretty").select2({
    tokenSeparators: [","], 
    tags:["1", "2", "3", "php", "tiger", "test", "big bang theory", "bikes", "gh", "sd", "cheese", "food", "name", "jack", "chickens", "yikes!", "testing", "this", "is", "a", "questionj", "new", "question", "s"]
});

Was sich als solches zeigt:

enter image description here

ABER wenn ich versuche, der Box mithilfe dieses Codes Daten dynamisch über AJAX zuzuweisen:

$.ajax({
    type: "POST",
    url: "grabTags.php",
    data: "tags="+$("#selectPretty").val(),
    success: 
        function(msg2) {
            alert(msg2);
            $("#selectPretty").select2({
                tokenSeparators: [","],
                tags:[msg2]
            });
        }
});

Es wird so herauskommen:

enter image description here

Aus irgendeinem Grund ist die gesamte Zeichenfolge eine Option und ich kann sie nicht dazu bringen, das Ergebnis in verschiedene Optionen aufzuteilen...

Weiß jemand, was ich hier tun kann?

Beachten Sie, dass 'tags: [msg2]' von meinen grabTags zurückgegeben wird.php-Datei und 'msg2' = "1", "2", "3, usw...

Mit freundlichen Grüßen

War es hilfreich?

Lösung

Haben Sie versucht, die Zeichenfolge zu teilen, die vom PHP zurückkommt?

Sie können das aufrufen split methode für einen String (wie den, der von Ihrem PHP zurückgegeben wird) und übergeben Sie ihm ein Trennzeichen (in Ihrem Fall ein ,).

So etwas sollte funktionieren:

$.ajax({
    type: "POST",
    url: "grabTags.php",
    data: "tags="+$("#selectPretty").val(),
    success: 
        function(msg2) {
            //at this point, msg2 is the string: '"1","2","3"'

            var myTags = msg2.split(',');
            //myTags is now the array: ["1","2","3"]

            $("#selectPretty").select2({

                //tags needs to be an array, so pass in myTags
                tags: myTags 
            });
        }
});

Andere Tipps

Der Select2 tags benötigen Sie ein Javascript Array, nicht nur eine Zeichenfolge, die von Klammern umgeben ist.

Lassen Sie PHP also serverseitig ein json-codiertes Array ausspucken:

$tags = array("1", "2", "3", "php", "tiger", "test", "big bang theory", "bikes", "gh", "sd", "cheese", "food", "name", "jack", "chickens", "yikes!", "testing", "this", "is", "a", "questionj", "new", "question", "s");
echo json_encode($tags);

Jetzt nehmen die Client-Seite diese Antwort in Ihren Ajax auf success handler, und weisen Sie es direkt zu tags.

Beachten Sie, dass Sie möglicherweise Folgendes einstellen müssen dataType zu json in Ihrem Ajax-Aufruf, damit jQuery die Antwort automatisch als json analysiert.Ich bin mir nicht sicher, ob es das alleine herausfinden wird oder nicht.

Möglicherweise können Sie auch loswerden tokenSeparators wenn Sie ein tatsächliches Array als Tags angeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top