我有下面的代码并试图用我的webservice返回的json数据填充我的slickgrid。但网格没有填充。 返回的数据为空,因为我看不到警报窗口中的任何内容。
$(function ()
{
var slickdata = [];
$.getJSON("comm/j/abc?action=hi", function(data)
{
// data is a JavaScript object now. Handle it as such
for (var i=0;i<data.length;i++)
{
alert("slickdata i" );
slickdata[i] =
{
month: data[i].month,
teamed: data[i].teamed,
net: data[i].net
};
}
});
alert(slickdata);
// dataView = new Slick.Data.DataView({ inlineFilters: true });
grid = new Slick.Grid("#myGrid", slickdata, columns, options);
// grid.setSelectionModel(new Slick.RowSelectionModel());
})
下面的服务电话输出(JSONData)
{
p: {
month: "May-2014",
teamed: "Y",
net: 100000
}
}
控制台上没有显示错误
答案 0 :(得分:0)
您确定从网络服务中得不到任何回报吗?尝试在for
循环之前添加此内容:
alert(data.toSource());
然后,代替alert(slickdata);
恕我直言,你应该写alert(slickdata.toSource());
,因为它是一个对象数组。
答案 1 :(得分:0)
首先,如果对象没有长度,则无法根据对象的长度循环对象。在您的情况下,您可以简单地使用data.p。
slickdata[0] = data.p; // this replaced your entire for loop
此外,您需要在成功回调中初始化网格,否则它无法访问slickdata。
$(function(){
$.getJSON("comm/j/abc?action=hi", function(data) {
grid = new Slick.Grid("#myGrid", [data.p], columns, options);
});
});
我不知道网格是否可以使用该数据。
答案 2 :(得分:0)
如果您期望一组对象(我对您的数据结构有点困惑),那么您可以使用for循环迭代它,但是根据您的JSON输出,没有数组而您只是得到一个东西。因此,您只需要获取此对象并使用它:
var slickdata = [];
$.getJSON("comm/j/abc?action=hi", function(data) {
myData = data.p;
slickdata[0] = {
month: myData.month,
teamed: myData.teamed,
net: myData.net
};
});