Kendo Datasource响应为空

时间:2013-09-20 15:25:08

标签: kendo-ui kendo-datasource

我是Kendo UI的新手。我正在尝试读取远程数据并在屏幕上显示。我可以通过访问浏览器中的URL来查看远程json数据。但是当我尝试在kendo UI中警告()响应数据时,它是空的。

这是示例代码。

<script type="text/javascript">
    var shareDataSource;
    var viewModel;
    function searchByVin() {
        var vin = $("#vinNumber").val();
        shareDataSource = new kendo.data.DataSource({
            transport: {
                read: {
                    url: "http://localhost:9080/portal/programexcep/resources/request/vin/"+vin,
                    dataType: "json"
                }
            },
            schema: {
                data: "data",
                model: { id: "Id" }
            },
            requestEnd: function(e) {
                var response = e.response;
                var type = e.type;
                alert(type);
                alert(response.length);
            }
        });
        shareDataSource.read();
        alert(vin);
        alert(kendo.stringify(shareDataSource.data()));
    }
</script>

JSON数据是

{"Id":10,"FirstName":"John Smith","vin":"html5"} 

作为浏览器中的响应。 alert(kendo.stringify(shareDataSource.data()));为空 并且alert(response.length);也未定义。

有人可以为此提供帮助吗?

1 个答案:

答案 0 :(得分:1)

问题是shareDataSource.read();是异步的,这意味着您调用了read但数据不是立即可用的。您可以使用fetch代替数据可用时执行部分代码。你的代码是:

shareDataSource.fetch(function() {
    alert(vin);     
    alert(kendo.stringify(shareDataSource.data()));
});

requestEnd函数中也存在问题:您尝试获取length的{​​{1}},但在response定义中您说model字段被称为data,所以你的服务器应该返回类似的东西:

data

然后为了访问长度,你应该{ "data" : [ { "Id" : 1 }, { "Id" : 2 }, { "Id" : 3 } ] }