【发布时间】:2017-08-09 19:26:29
【问题描述】:
我正在尝试使用通过 ajax 检索的数据填充剑道网格。这是ajax:
var model = @Html.Raw(Json.Serialize(Model));
$(document).ready(function () {
$.ajax({
url: "/Utilities/Report/Run",
data: JSON.stringify(model),
contentType: "application/json",
type: "POST",
success: function(result) {
var ds = new kendo.data.DataSource({
data: result
});
alert(result);
$("#grid").data("kendoGrid").setDataSource(ds);
},
error: function(result) {
options.error(result);
}
});
$("#grid").kendoGrid({
toolbar: ["excel", "pdf"],
excel: {
fileName: "test"
},
pdf: {
fileName: "test"
},
});
});
alert(result) 的数据是这样的:
[
{"TEST":"one"},
{"TEST":"two"},
{"TEST":"three"}
]
ajax 调用似乎正在工作,数据对我来说看起来不错,但剑道网格没有更新,它仍然是空白的。我也没有收到任何错误。我尝试将 kendoGrid 放在 ajax 成功函数中,结果相同。我尝试在 DataSource 中使用 transport 和 read 来检索数据,但这一直给我一个错误:n.slice is not a function。然而,其他人似乎认为这是因为没有定义模式。由于我正在检索的数据类型,我无法定义这一点。从服务器检索的数据可以具有任何列/字段名称,以及任意数量的列。然而,它并不是复杂的 JSON。
如何让我的网格填充这些数据?
【问题讨论】:
-
伙计,我已经遇到过这个问题,但我无法重现它,也不记得解决方案。但我记得的一点是关于您传递给数据源的对象,在您的情况下为
result对象。确保它是一个 javascript 对象,而不是字符串或类似的东西(甚至注意到您添加了contentType: "application/json")。也许如果您尝试将其用作{ data: result }并定义您的schema.data: "data"只是为了帮助剑道理解您的数据。这个问题很糟糕,而且永远都会发生,我相信他们永远不会解决它。
标签: javascript jquery ajax kendo-ui kendo-grid