質問

私のselect2の形式は次のようなものです:

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

これはそのように示しています:

enter image description here

しかし、このコードを使用してAJAXを介してボックスにデータを動的に割り当てようとすると:

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

それはそうのように出てくるでしょう:

enter image description here

何らかの理由で文字列全体が1つのオプションであり、結果をさまざまなオプションに爆発させることはできません。..

誰かが私がここで何ができるか知っていますか?

私のgrabTagsから'tags:[msg2]'が返されることに注意してください。phpファイルと'msg2' = "1", "2", "3, など。..

親切なよろしく

役に立ちましたか?

解決

PHPから戻ってきた文字列を分割しましたか?

文字列(PHPから返されるものなど)でsplitメソッドを呼び出して、(あなたの場合は,)区切り文字に渡すことができます。

これがうまくいくはずです:

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

他のヒント

を選択します。 tags javascriptが必要です 配列, 、括弧で囲まれた文字列だけではありません。

サーバー側では、PHPが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);

今、クライアント側はあなたのajaxでその応答を取ります success に直接割り当てることができます。 tags.

設定が必要な場合があることに注意してください dataTypejson jQueryが応答をjsonとして自動的に解析するように、ajax呼び出しで。それがそれ自身でそれを理解するかどうかはわかりません。

あなたはまた、取り除くことができるかもしれません tokenSeparators 実際の配列をタグとして提供する場合。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top