选择2 - >动态输入以字符串形式返回(jQuery

时间:2013-11-16 18:51:14

标签: javascript php jquery jquery-select2

我的选择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"]
});

其中显示如下:

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

由于某种原因,整个字符串是一个选项,我不能让它将结果分解为不同的选项......

有谁知道我能在这做什么?

请注意,我的grabTags.php文件返回'tags:[msg2]','msg2'=“1”,“2”,“3等...

最基本的问候

2 个答案:

答案 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