Ошибка рендеринга данных с автозаполнением Javascript / KendoUI - У объекта # <Object> нет метода 'slice' - как решить?

Я следую заИспользование Kendo UI с ODC и Web-интерфейсом MVC4 WebAPI статья. После установки KendoUI и проверки всех ссылок я набираю три символа и получаю следующую ошибку:

Uncaught TypeError: у объекта # нет метода 'ломтик'

Корень проблемы

Чтобы сохранить чтение обновлений: при отладке я обнаружил, что проблема в том, что JS ожидает синтаксический анализ массива, где он не 'Доступно в данных - в корне. В иерархии данных этоодин уровень в.

Оригинальная проблема

Я очистил kendo.web.min.js, и ошибка происходит вокруг строки 3498:

success: function (n) {
     var i = this,
         r = i.options;
     return i.trigger(wt, {
         response: n,
         type: "read"
     }), n = i.reader.parse(n), i._handleCustomErrors(n) ? (i._dequeueRequest(), t) : (i._pristine = et(n) ? e.extend(!0, {}, n) : n.slice ? n.slice(0) : n, i._total = i.reader.total(n), i._aggregate && r.serverAggregates && (i._aggregateResult = i.reader.aggregates(n)), n = i._readData(n), i._pristineData = n.slice(0), i._data = i._observe(n), i._addRange(i._data), i._process(i._data), i._dequeueRequest(), t)

Виджеты Kendo UI загружаются так же хорошо, как и CSS:







И я вижу ту же ошибку и с использованием помощника / расширения Razor MVC:

@(Html.Kendo().AutoComplete()
    .Name("userAutoComplete")                   // specifies the "id" attribute of the widget
    .DataTextField("USERNAME")
    .DataSource(source =>
        {
            source.Read(read =>
                {
                    read.Url("/api/user");
                })
                  .ServerFiltering(true);       // if true, the DataSource will not filter the data on the client
        }
    )
)

и через непосредственно через JS: я

/// 
/// 
/// 
/// 

$(document).ready(function () {
    // load up KendoUI

    // gets data from /api/user
    var dataSource = new kendo.data.DataSource({
        transport: {
            read: {
                url: "/api/user"
            }
        }
    });

    $("#userSearch").kendoAutoComplete({
        dataSource: dataSource,
        dataTextField: "USERNAME",
        minLength: 3
    });

    $("#userSearch").on('input', function () {
        console.log($("#userSearch").val());
    });

}); // $(document).ready()

Я уверен, что это что-то простое, что я могу пропустить. Я пробовал как с веб-и всех файлов JS.

Любая помощь будет оценена.

-- ОБНОВИТЬ --

Единственный реальный HTML отсутствует в этом контенте является

Я создал совершенно новое решение и очень простое представление на основе одного из примеров пользовательского интерфейса Kendo, который получает данные JSON изhttp://api.geonames.orgи получаю ту же ошибку.

Я думал, что с использованием новейшей библиотеки JS (//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js может быть причиной проблемы, поэтому я попробовал 1.7 lib. Та же проблема:

@using Kendo.Mvc.UI

@{
    Layout = null;
}





    
    Index

    
    
    

     

    
    
    

    

        $(document).ready(function () {
            $("#autoComplete").kendoAutoComplete({
                minLength: 6,
                dataTextField: "title",
                filter: "contains",
                dataSource: new kendo.data.DataSource({
                    transport: {
                        read: {
                            url: "http://api.geonames.org/wikipediaSearchJSON",
                            data: {
                                q: function () {
                                    return $("#autoComplete").data("kendoAutoComplete").value();
                                },
                                maxRows: 10,
                                username: "demo"
                            }
                        }
                    },
                    schema: {
                        data: "geonames"
                    }
                }),
                change: function () {
                    this.dataSource.read();
                }
            })
        });

        




    

        

    


-- ОБНОВИТЬ --

Используя приведенный выше код, я вернулся и попробовал снова - он работал нормально. Попробовав еще несколько раз, я столкнулся с той же проблемой. Это произошло из-за того, что действительные данные JSON изменились на следующие:

{"status":{"message":"the daily limit of 30000 credits for demo has been exceeded. Please use an application specific account. Do not use the demo account for your application.","value":18}}

... что заставило меня взглянуть на форматирование данных, поступающих из моего API (глядя на это в Fiddler:

Вместо:

JSON --- {... данные ...

его

JSON
---$id=1
---$values
------{}
---------$id=2
---------CREATEDATETIME...
[email protected]
---------GROUPS
------------$id=...
------------$id=...
---------USERNAME=someusername
------{}
---------$id=4
.
.
.

Таким образом, ошибка вызвана тем, что массив недоступен, где он 'ожидается - вместо корня этоодин уровень глубоко.

Как получить привязку данных к одноуровневому объекту, а не к корню объекта JSON?

Благодарю.

Ответы на вопрос(5)

Ваш ответ на вопрос