JQuery-Select2 -操作发送的http-post数据以发送文本而不是id

JQuery-Select2 - Manipulate the sended http-post data to send the text not the IDs

本文关键字:文本 id http-post 操作 JQuery-Select2 数据      更新时间:2023-09-26

有一段时间我使用tagsinput为Bootstrap 3,它工作得很好。现在我改成了select2,这很简单,也很好。我只有两个小问题,我希望你能帮助我——我不太确定如何处理javascript。

先决条件:select2正在工作,使用ajax与json-response。

1。当用户发送表单时,他输入的新单词将以这种方式发送,他从ajax响应中选择的单词将通过其id发送。我需要的是,所有输入和选择的单词都作为单词(没有id)发送。

我需要在哪里更改脚本?I tried:

results: function (data) {
    return {
        results: data
    };
}
to results: function (data) {
    return {
        results: data.text
    };
}

但是这破坏了搜索功能。

2。第二个问题可能是相同的。当用户刷新表单时,将显示他输入的新单词,但是他从ajax请求中选择的单词仅按其ID显示。

$(document).ready(function () {
    $('#keywords').select2({
        tags: true,
        tokenSeparators: ["'n"],
        createSearchChoice: function (term) {
            return {
                id: term,
                text: term
            };
        },
        ajax: {
            url: "/slipbox/entities/jsonKeywords",
            dataType: 'json',
            data: function (term) {
                return {
                    q: term
                };
            },
            results: function (data) {
                return {
                    results: data
                };
            }
        },
        initSelection: function (element, callback) {
            var data = [];
            function splitVal(string, separator) {
                var val, i, l;
                if (string === null || string.length < 1) return [];
                val = string.split(separator);
                for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]);
                return val;
            }
            $(splitVal(element.val(), ",")).each(function () {
                data.push({
                    id: this,
                    text: this
                });
            });
            callback(data);
        }
    });
});
非常感谢,并致以最良好的祝愿Aljoscha

将以下代码添加到我们的select2:

id: function(object) {
        return object.text;
    }

我使用的是3.5.2版本