-1

我正在努力让 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");

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

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

查看 Chrome Dev Tools 中的 Fiddler 或 Network 选项卡,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"}]

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

谢谢!

4

1 回答 1

0

感谢推特上的@chris_a_wagner。罪魁祸首是我为格式指定了 jsonp 而不是 json (我忘记了我最初为什么这样做)。切换到 json 有效。

于 2013-09-06T00:49:48.417 回答