Question

Le format de mon select 2 est le suivant :

$("#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"]
});

Ce qui montre comme tel :

enter image description here

MAIS, lorsque j'essaie d'attribuer dynamiquement des données dans la boîte via AJAX en utilisant ce code :

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

Cela sortira comme ceci :

enter image description here

Pour une raison quelconque, la chaîne entière est une option et je ne peux pas faire exploser le résultat en différentes options...

Est-ce que quelqu'un sait ce que je peux faire ici ?

Notez que 'tags:[msg2]' est renvoyé par mon fichier grabTags.php et 'msg2' = "1", "2", "3, etc...

Meilleures salutations

Était-ce utile?

La solution

Avez-vous essayé de diviser la chaîne qui revient du PHP ?

Vous pouvez invoquer le split méthode sur une chaîne (telle que celle renvoyée par votre PHP) et transmettez-lui un séparateur (dans votre cas, un ,).

Quelque chose comme ceci devrait fonctionner :

$.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 
            });
        }
});

Autres conseils

Le Sélect2 tags besoin d'un javascript tableau, pas seulement une chaîne entourée de crochets.

Donc côté serveur, demandez à PHP de cracher un tableau codé en json :

$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);

Maintenant, côté client, prenez cette réponse dans votre ajax success gestionnaire et attribuez-le directement à tags.

Notez que vous devrez peut-être définir dataType à json dans votre appel ajax afin que jQuery analyse automatiquement la réponse en tant que json.Je ne sais pas s'il comprendra cela tout seul ou non.

Vous pourrez peut-être également vous débarrasser de tokenSeparators si vous fournissez un tableau réel comme balises.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top