我是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);
也未定义。
有人可以为此提供帮助吗?
答案 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 }
]
}