Jquery.getJson缺少什么?

时间:2014-04-28 21:14:33

标签: javascript jquery slickgrid

我有下面的代码并试图用我的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
    }
}

控制台上没有显示错误

3 个答案:

答案 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
  };
 });