Jquery 从未显示的服务器中选择2个结果

Jquery 从未显示的服务器中选择2个结果,jquery,select2,jquery-select2-4,Jquery,Select2,Jquery Select2 4,我使用Select2 4.0.3试图让服务器返回的json作为选项显示在下拉列表中,但当我打开下拉列表或在字段中搜索时,结果根本不显示 <body> <select class="select2-student form-control"> </select> </body> <script> $(document).ready(function () { $(".select2-student

我使用Select2 4.0.3试图让服务器返回的json作为选项显示在下拉列表中,但当我打开下拉列表或在字段中搜索时,结果根本不显示

<body>
    <select class="select2-student form-control">
    </select>
</body>

<script>
    $(document).ready(function () {
        $(".select2-student").select2({
            ajax: {
                url: "/MyUrl",
                data: function (params) {
                    return {
                        text: params.term
                    };
                },
                processResults: function (data, params) {
                    return {
                        results: data
                    };
                }
            }
        });
    });
</script>
当我输入一个与服务器端标准不匹配的字符串(即,与“文本”字段中的内容不匹配)时,我在下拉列表中得到“未找到结果”,但当返回结果时,甚至没有出现包含任何内容的下拉列表-我的浏览器中也没有收到任何错误


我一整天都在尝试这段代码的一些变体,但还没有得到任何效果。建议?

针对任何有相同问题的人的更新:我在发布后不久就知道了这里发生了什么-从服务器返回的JSON不是驼峰大小写,因此Select2没有正确读取。正确的格式应为:

[{"text":"My Student","id":3}]

回过头来看,错过是多么愚蠢,但ASP.NET在默认情况下似乎不会以这种方式格式化。我从开始使用JsonCamelCaseResult类,该类工作得非常好。

针对存在相同问题的任何人进行更新:我在发布后不久就了解到了这里发生的情况-从服务器返回的JSON不是驼峰式的,因此Select2没有正确读取它。正确的格式应为:

[{"text":"My Student","id":3}]

回过头来看,错过是多么愚蠢,但ASP.NET在默认情况下似乎不会以这种方式格式化。我从开始使用JsonCamelCaseResult类,它工作得很好。

我知道这是一个很老的问题,但更好的方法是这样做:

            processResults: function(data) {
                return {
                    results: jQuery.map(data, function(item) {
                        return {
                            id: item.key,
                            text: item.value
                        }
                    })
                };
            },

这样,您就可以返回映射对象的标准集合,而不必担心任何大小写。

我知道这是一个很老的问题,但更好的方法是这样做:

            processResults: function(data) {
                return {
                    results: jQuery.map(data, function(item) {
                        return {
                            id: item.key,
                            text: item.value
                        }
                    })
                };
            },
这样,您就可以返回映射对象的标准集合,而不必担心任何大小写