Jquery.getJson遗漏了什么

Jquery.getJson missing something?

本文关键字:什么 getJson Jquery      更新时间:2023-09-26

我有下面的一段代码,并试图用Web服务返回的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
    }
}

控制台上没有显示错误

如果你想要一个对象数组(我对你的数据结构有点困惑(,那么你可以使用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
  };
 });

你确定你没有从webservice得到任何回报吗?试着在for循环之前添加这个:

alert(data.toSource());

然后,您应该编写alert(slickdata.toSource());,而不是alert(slickdata); IMHO,因为它是一个对象数组。

首先,如果对象没有长度,则不能根据对象的长度对其进行循环。在您的情况下,您可以简单地使用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);
    });
});

我不知道网格是否能处理这些数据。