我的选择2的格式是这样的:
$("#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]
});
}
});
它会像这样出现:
由于某种原因,整个字符串是一个选项,我不能让它将结果分解为不同的选项......
有谁知道我能在这做什么?
请注意,我的grabTags.php文件返回'tags:[msg2]','msg2'=“1”,“2”,“3等...
最基本的问候
答案 0 :(得分:1)
您是否尝试拆分从PHP返回的字符串?
您可以在字符串上调用split
方法(例如从PHP返回的方法)并将其传递给分隔符(在您的情况下为,
)。
这样的事情应该有效:
$.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
});
}
});
答案 1 :(得分:0)
Select2 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
。
请注意,您可能需要在ajax调用中将dataType
设置为json
,以便jQuery自动将响应解析为json。不确定它是否会自行解决。
如果您提供实际数组作为标记,您也可以摆脱tokenSeparators
。