我的KendoUI数据源有什么问题

时间:2013-09-05 21:13:49

标签: kendo-ui kendo-autocomplete

我正在努力让AutoComplete小部件正常工作。此代码有效:

    var clients = [{ "ClientId": 123, "Name": "Steve" }, { "ClientId": 124, "Name": "Julie" }];

    $("#client").kendoAutoComplete({
        minLength: 1,
        filter: "contains",
        placeholder: "Type client name...",
        dataTextField: "Name",
        dataValueField: "ClientId",
        template: kendo.template($("#template").html()),
        dataSource: clients,
        height: 370,
    }).data("kendoAutoComplete");

但是,当我尝试使用实际的远程dataSource时,浏览器会显示加载图像但从不显示所选名称。这是备用数据源:

var clients2 = new kendo.data.DataSource({
                type: "jsonp",
                transport: {
                    read: {
                        dataType: "jsonp",
                        url: "/api/clients"
                    }
                }
            });

在Chrome开发工具中查看Fiddler或网络标签,api调用的结果是:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcU3RldmVcRG9jdW1lbnRzXEdpdEh1YlxkZGQtdmV0LXNhbXBsZVxGcm9udERlc2tTb2x1dGlvblxGcm9udERlc2suV2ViXGFwaVxjbGllbnRz?=
X-Powered-By: ASP.NET
Date: Thu, 05 Sep 2013 21:08:28 GMT
Content-Length: 141

[{"ClientId":"00000000-0000-0000-0000-000000000000","Name":"Steve Smith"},{"ClientId":"00000000-0000-0000-0000-000000000000","Name":"Julie"}]

那么,有什么区别,为什么它不起作用?显然正在使用数据源,因为我可以看到网络调用发生在我在文本框中输入的每个附加字符。

谢谢!

1 个答案:

答案 0 :(得分:0)

感谢Twitter上的@chris_a_wagner。罪魁祸首是我为格式而不是json指定jsonp(我忘了为什么我最初有这个)。切换到json工作。