首页 > 解决方案 > 如何从 Select2 多选中传递 URL 字符串中的多个参数

问题描述

我在使用多个的输入字段上初始化了一个 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) 我得到 The 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 多选之前,我能够访问对象及其属性。

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

标签: javascriptjqueryjsonjquery-select2

解决方案


这是我想出的对我有用的东西。我不确定 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;


        }

推荐阅读