如何从Select2 Multi Select中传递URL字符串中的多个参数

时间:2019-07-11 12:28:58

标签: javascript jquery json jquery-select2

我在使用倍数的输入字段上初始化了一个select2:当我在此字段上初始化select2时,为true。我一直在尝试找出如何从此HTML输入字段中选择多个选项,并将它们转换为字符串以按如下所示在url中传递它们:url?employer = 1&employer = 2&employer = 3

我遇到的问题是使用

jQuery.param(JSON.stringify(employerKey))

这对参数进行了编码,而当我对其进行解码时,仍然没有任何意义。这是控制台注销的示例。

0=%5B&1=%7B&2=%22&3=w&4=e&5=b&6=s&7=e&8=r&9=v&10=i&11=c&12=e&13=I&14=d&15=%22&16=%3A&17=%22&18=e&19=c&20=i&21=%22&22=%2C&23=%22&24=e&25=m&26=p&27=l&28=o&29=y&30=e&31=r&32=N&33=o&34=%22&35=%3A&36=1&37=8&38=7&39=%2C&40=%22&41=i&42=d&43=%22&44=%3A&45=1&46=8&47=7&48=%2C&49=%22&50=t&51=e&52=x&53=t&54=%22&55=%3A&56=%22&57=0&58=0&59=2&60=1&61=3&62=7&63=+&64=%7C&65=+&66=n&67=u&68=l&69=l&70=%22&71=%7D&72=%2C&73=%7B&74=%22&75=w&76=e&77=b&78=s&79=e&80=r&81=v&82=i&83=c&84=e&85=I&86=d&87=%22&88=%3A&89=%22&90=e&91=c&92=i&93=%22&94=%2C&95=%22&96=e&97=m&98=p&99=l&100=o&101=y&102=e&103=r&104=N&105=o&106=%22&107=%3A&108=1&109=8&110=4&111=%2C&112=%22&113=i&114=d&115=%22&116=%3A&117=1&118=8&119=4&120=%2C&121=%22&122=t&123=e&124=x&125=t&126=%22&127=%3A&128=%22&129=0&130=0&131=2&132=1&133=3&134=4&135=+&136=%7C&137=+&138=n&139=u&140=l&141=l&142=%22&143=%7D&144=%5D

如果我执行JSON.stringify(employerKey),则会在控制台日志中获得Params HERE Are undefined =&undefined =。未定义匹配我在输入中选择的数量。

在这里我进行ajax调用并传递数据

$jw.secureAjax({
                url : "usersMemberAdd.action",
                success : function(data, status, xmlreq) {
                    DataTableUtils.addRow($("#employerClientTable").DataTable(), data);
                    var tr = $("#employerClientTable > tbody > tr:last");
                    tr.attr("id", "");

                },
                data : "employerNo=" + employerKey.id + "&userNo=" + $("#usersNo").val()
            });
        });

如您所见,在使用Select2多重选择之前,我能够访问该对象及其属性。

任何帮助将不胜感激!我已经搜索了一段时间,以寻求解决方案。谢谢!

1 个答案:

答案 0 :(得分:0)

这就是我想出的对我有用的东西。我不确定select2是否有更好的方法来处理此问题。谢谢。

    var employerKeyArray = $("#employerSearch_id").select2("data");
        var parameterString = "";

        for(var i=0 ; i < employerKeyArray.length ; i++){

            var selectedOption = employerKeyArray[i];

            if(i > 0){

                parameterString += "&";
            }

            parameterString += "multiEmployerKeys=" + selectedOption.id;


        }