Select2->動的入力は文字列として返されます(jQuery
-
21-12-2019 - |
質問
私の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"]
});
これはそのように示しています:
しかし、このコードを使用してAJAXを介してボックスにデータを動的に割り当てようとすると:
$.ajax({
type: "POST",
url: "grabTags.php",
data: "tags="+$("#selectPretty").val(),
success:
function(msg2) {
alert(msg2);
$("#selectPretty").select2({
tokenSeparators: [","],
tags:[msg2]
});
}
});
それはそうのように出てくるでしょう:
何らかの理由で文字列全体が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
.
設定が必要な場合があることに注意してください dataType
に json
jQueryが応答をjsonとして自動的に解析するように、ajax呼び出しで。それがそれ自身でそれを理解するかどうかはわかりません。
あなたはまた、取り除くことができるかもしれません tokenSeparators
実際の配列をタグとして提供する場合。
所属していません StackOverflow