AJAX结果问题 - Data.Results未定义

时间:2013-01-25 05:36:26

标签: ajax json jquery jquery-select2

我正在尝试将Select2设置为使用Ajax并且相当困难。我在IE中调试并确认我的AJAX返回结果,所以这似乎不是问题。输入框加载,但是当我在“牛奶”中输入“mi”时,它只是说“搜索...”并且从未找到任何内容!

这是我的Jquery:

        $(document).ready(function () {
            $('#e1').select2({
                placeholder: "Select an ingredient...",
                minimumInputLength: 2,
                ajax: {
                    url: "../api/IngredientChoices",
                    dataType: "jsonp",
                    quietMillis: 500,
                    data: function (term, page) {
                        return {
                            q: term,
                            page_limit: 10,
                            page: page

                        };
                    },
                    results: function (data, page) {
                        var more = (page * 10) < data.total;
                        return {
                            results: data.MainName, more:more
                        }

                    }
                }
            });
        });

JSON:

[{"SubItemID":1,"MainItemID":1,"SubName":"2%","MainName":"Milk"},{"SubItemID":2,"MainItemID":1,"SubName":"Skim/Fat Free","MainName":"Milk"},{"SubItemID":3,"MainItemID":2,"SubName":"Chedder","MainName":"Cheese"}]

HTML:

<td><input type="hidden" id="e1" /></td>

如果我将dataType更改为json,当我在框中输入“mi”时会出现不同类型的错误。

enter image description here

以下是工作版的最终代码:

            $('#e1').select2({
                placeholder: "Select an ingredient...",
                minimumInputLength: 2,
                ajax: {
                    url: "../api/IngredientChoices",
                    dataType: "json",
                    quietMillis: 500,
                    data: function (term, page) {
                        return {
                            q: term,
                            page_limit: 10,
                            page: page

                        };
                    },
                    results: function (data, page) {
                        var more = (page * 10) < data.length;
                        console.log(more);
                        console.log(data);
                        return { results: data, more: more };

                    },
                    formatResult: function (post) {
                        markup = '<strong>' + post.text + '</strong>';
                    }
                }
            });

1 个答案:

答案 0 :(得分:4)

您遇到的错误似乎是因为您获得的结果格式。 Select2是预期结果,是具有id:和text:attributes。

的对象的集合

[{id:1,text:'String'},{id:2,text:'Other String。'}]